thinkjs 文件上传功能实例代码


Posted in Javascript onNovember 08, 2017

介绍

ThinkJS 是一款面向未来开发的 Node.js 框架,整合了大量的项目最佳实践,让企业级开发变得如此简单、高效。从 3.0 开始,框架底层基于 Koa 2.x 实现,兼容 Koa 的所有功能。

特性

  • 基于 Koa 2.x,兼容 middleware
  • 内核小巧,支持 Extend、Adapter 等插件方式
  • 性能优异,单元测试覆盖程度高
  • 内置自动编译、自动更新机制,方便快速开发
  • 使用更优雅的 async/await 处理异步问题,不再支持 */yield
  • 从 3.2 开始支持 TypeScript

架构

thinkjs 文件上传功能实例代码

thinkjs是360公司出的一个基于nodejs的mvc框架,本文采用thinkjs写后端,具体代码如下:

let formdata = new FormData($('form')[0]);
  $('#fileUpload').submit(function (e) {
    e.preventDefault();
    var data = new FormData($(this)[0]);
    $.ajax({
      url: '/themestore/upload/theme',
      type: 'POST',
      data: data,
      async: false, //发送同步请求(默认为TRUE)
      cache: false, //不同浏览器缓存中加载请求信息(默认为true)
      contentType: false, //内容编码格式
      processData: false,
/*要求为Boolean类型的参数,默认为true。默认情况下,发送的数据将被转换为对象(从技术角度来讲并非字符串)以配合默认内容类型"application/x-www-form-urlencoded"。如果要发送DOM树信息或者其他不希望转换的信息,请设置为false。*/
      success:function (res) {
        if(!res.errno) alert('上传成功!');
        else alert('上传失败,请重试!');
      }
    });
  });

说明:async: false, cache: false, contentType: false, processData: false,需要写上去。

此外,formdata对象中表单各项对应的值,要使用其自身get方法查看。

eg:data.get(‘file') //其中get的参数是表单元素的name。

async themeAction(){
  let themefile = this.file('themename');
  let filepath = themefile.path;//为防止上传的时候因文件名重复而覆盖同名已上传文件,path是MD5方式产生的随机名称
  let uploadpath = think.RESOURCE_PATH + '/static/theme';
  think.mkdir(uploadpath);//创建该目录
  //提取出用 ‘/' 隔开的path的最后一部分。
  //let basename = path.basename(filepath);
  let basename = themefile.originalFilename;//因为本系统不允许上传同名主题,所以文件名就直接使用主题名
  //将上传的文件(路径为filepath的文件)移动到第二个参数所在的路径,并改为第二个参数的文件名。
  fs.renameSync(filepath, uploadpath + '/' + basename);
  themefile.path = uploadpath + '/' + basename;
  //读取压缩文件信息存数据库
  let zip = new JSZip();
  this.success(themefile);
 }

总结

以上所述是小编给大家介绍的thinkjs 文件上传功能实例代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
用于table内容排序
Jul 21 Javascript
在VS2008中使用jQuery智能感应的方法
Dec 30 Javascript
让网页跳转到指定位置的jquery代码非书签
Sep 06 Javascript
验证码在IE中不刷新而谷歌等浏览器正常的解决方案
Mar 18 Javascript
JavaScript创建闭包的两种方式的优劣与区别分析
Jun 22 Javascript
js正则表达式验证邮件地址
Nov 12 Javascript
深入浅出 jQuery中的事件机制
Aug 23 Javascript
Jquery on绑定的事件 触发多次实例代码
Dec 08 Javascript
JavaScript中定义对象原型的两种使用方法
Dec 15 Javascript
前端主流框架vue学习笔记第二篇
Jul 26 Javascript
React Native中的RefreshContorl下拉刷新使用
Oct 09 Javascript
深入剖析Express cookie-parser中间件实现示例
Feb 01 Javascript
基于jQuery的$.getScript方法去加载javaScript文档解析
Nov 08 #jQuery
在React 组件中使用Echarts的示例代码
Nov 08 #Javascript
浅谈mint-ui loadmore组件注意的问题
Nov 08 #Javascript
es6在react中的应用代码解析
Nov 08 #Javascript
mac中利用NVM管理不同node版本的方法详解
Nov 08 #Javascript
浅谈vue-router2路由参数注意的问题
Nov 08 #Javascript
基于jQuery中ajax的相关方法汇总(必看篇)
Nov 08 #jQuery
You might like
php 团购折扣计算公式
2011/11/24 PHP
Linux中用PHP判断程序运行状态的2个方法
2014/05/04 PHP
ThinkPHP CURD方法之data方法详解
2014/06/18 PHP
文本框获得焦点和失去焦点的判断代码
2012/03/18 Javascript
js拖动div 当鼠标移动时整个div也相应的移动
2013/11/21 Javascript
jQuery读取和设定KindEditor值的方法
2013/11/22 Javascript
浅谈javascript对象模型和function对象
2014/12/26 Javascript
js实现头像图片切割缩放及无刷新上传图片的方法
2015/07/17 Javascript
js实现类似菜单风格的TAB选项卡效果代码
2015/08/28 Javascript
Javascript中replace()小结
2015/09/30 Javascript
javascript常见数字进制转换实例分析
2016/04/21 Javascript
jQuery实现三级菜单的代码
2016/05/09 Javascript
javascript实现瀑布流动态加载图片原理
2016/08/12 Javascript
js自调用匿名函数的三种写法(推荐)
2016/08/19 Javascript
微信小程序 Storage API实例详解
2016/10/02 Javascript
关于angularJs指令的Scope(作用域)介绍
2016/10/25 Javascript
JS实现新建文件夹功能
2017/06/17 Javascript
JS按条件 serialize() 对应标签的使用方法
2017/07/24 Javascript
详解Immutable及 React 中实践
2018/03/01 Javascript
快速解决vue动态绑定多个class的官方实例语法无效的问题
2018/09/05 Javascript
JavaScript基于遍历操作实现对象深拷贝功能示例
2019/03/05 Javascript
JavaScript适配器模式原理与用法实例详解
2020/03/09 Javascript
vue中的计算属性和侦听属性
2020/11/06 Javascript
Python实现的三层BP神经网络算法示例
2018/02/07 Python
Python制作动态字符图的实例
2019/01/27 Python
python+pyqt5实现图片批量缩放工具
2019/03/18 Python
实现Python与STM32通信方式
2019/12/18 Python
详解Pycharm出现out of memory的终极解决方法
2020/03/03 Python
详解python实现可视化的MD5、sha256哈希加密小工具
2020/09/14 Python
PyCharm常用配置和常用插件(小结)
2021/02/06 Python
Alba Moda德国网上商店:意大利时尚女装销售
2016/11/14 全球购物
自我评价个人范文
2013/12/16 职场文书
温馨提示标语
2014/06/26 职场文书
2019让人心动的商业计划书
2019/06/27 职场文书
python引入其他文件夹下的py文件具体方法
2021/05/23 Python
Python预测分词的实现
2021/06/18 Python