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 相关文章推荐
能说明你的Javascript技术很烂的五个原因分析
Oct 28 Javascript
js报$ is not a function 的问题的解决方法
Jan 20 Javascript
jQuery实现鼠标滑过Div层背景变颜色的方法
Feb 17 Javascript
javascript学习笔记之函数定义
Jun 25 Javascript
AngularJS实现Model缓存的方式
Feb 03 Javascript
关于JS中的apply,call,bind的深入解析
Apr 05 Javascript
解决jquery无法找到其他父级子集问题的方法
May 10 Javascript
jquery 实现回车登录详解及实例代码
Oct 23 Javascript
Node.js与Sails redis组件的使用教程
Feb 14 Javascript
jquery插件canvaspercent.js实现百分比圆饼效果
Jul 18 jQuery
javascript流程控制语句集合
Sep 18 Javascript
uni-app 支持多端第三方地图定位的方法
Jan 03 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
ThinkPHP整合datatables实现服务端分页的示例代码
2018/02/10 PHP
thinkPHP框架实现生成条形码的方法示例
2018/06/06 PHP
基于PHP实现邮箱验证激活过程详解
2020/10/28 PHP
defer属性导致引用JQuery的页面报“浏览器无法打开网站xxx,操作被中止”错误的解决方法
2010/04/27 Javascript
nodejs入门详解(多篇文章结合)
2012/03/07 NodeJs
js图片实时加载提供网页打开速度
2014/09/11 Javascript
使用javascript将时间转换成今天,昨天,前天等格式
2015/06/25 Javascript
自己动手写的javascript前端等待控件
2015/10/30 Javascript
关于JavaScript 原型链的一点个人理解
2016/07/31 Javascript
JavaScript关联数组用法分析【概念、定义、遍历】
2017/03/15 Javascript
Angular4学习笔记之新建项目的方法
2017/07/18 Javascript
解决linux下node.js全局模块找不到的问题
2018/05/15 Javascript
微信小程序实现富文本图片宽度自适应的方法
2019/01/20 Javascript
JavaScript中的一些实用小技巧总结
2019/04/07 Javascript
[46:47]2014 DOTA2国际邀请赛中国区预选赛5.21 LGD-CDEC VS NE
2014/05/22 DOTA
Python中tell()方法的使用详解
2015/05/24 Python
python获得文件创建时间和修改时间的方法
2015/06/30 Python
Python多线程下载文件的方法
2015/07/10 Python
Python matplotlib通过plt.scatter画空心圆标记出特定的点方法
2018/12/13 Python
pycharm重命名文件的方法步骤
2019/07/29 Python
Pytorch之卷积层的使用详解
2019/12/31 Python
python实现同一局域网下传输图片
2020/03/20 Python
python Autopep8实现按PEP8风格自动排版Python代码
2021/03/02 Python
实例讲解利用HTML5 Canvas API操作图形旋转的方法
2016/03/22 HTML / CSS
Andrew Marc官网:设计师外套的领先制造商
2019/10/30 全球购物
康拓普公司Java笔面试
2016/09/23 面试题
会计专业自荐信
2013/12/02 职场文书
《夕阳真美》教学反思
2014/04/27 职场文书
大学学习计划书范文
2014/05/02 职场文书
诉前财产保全担保书
2014/05/20 职场文书
人力资源职位说明书
2014/07/29 职场文书
个人职业及收入证明
2014/10/13 职场文书
2014年酒店年度工作总结
2014/12/10 职场文书
2015年五一劳动节活动总结
2015/02/09 职场文书
防卫过当辩护词
2015/05/21 职场文书
详解Java实践之建造者模式
2021/06/18 Java/Android