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 相关文章推荐
showModalDialog 和 showModelessDialog
Jan 22 Javascript
显示js对象所有属性和方法的函数
Oct 16 Javascript
js用闭包遍历树状数组的方法
Mar 19 Javascript
node.js中的fs.read方法使用说明
Dec 17 Javascript
jquery操作复选框checkbox的方法汇总
Feb 05 Javascript
jQuery构造函数init参数分析
May 13 Javascript
js显示当前日期时间和星期几
Oct 22 Javascript
js实现日期显示的一些操作(实例讲解)
Jul 27 Javascript
Node.js Express安装与使用教程
May 11 Javascript
jQuery点击页面其他部分隐藏下拉菜单功能
Nov 27 jQuery
微信小程序与后台PHP交互的方法实例分析
Dec 10 Javascript
微信小程序实现页面跳转传递参数(实体,对象)
Aug 12 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 批量替换html标签的实例代码
2013/11/26 PHP
PHP实现的mysql操作类【MySQL与MySQLi方式】
2017/10/07 PHP
CI框架(CodeIgniter)操作redis的方法详解
2018/01/25 PHP
可自定义速度的js图片无缝滚动示例分享
2014/01/20 Javascript
javascript日期格式化示例分享
2014/03/05 Javascript
Jquery响应回车键直接提交表单操作代码
2014/07/25 Javascript
JS判断图片是否加载完成方法汇总(最新版)
2016/05/13 Javascript
js+html5实现canvas绘制椭圆形图案的方法
2016/05/21 Javascript
JQuery 设置checkbox值二次无效的解决方法
2016/07/22 Javascript
javascript创建含数字字母的随机字符串方法总结
2016/08/01 Javascript
JavaScript 实现的checkbox经典实例分享
2016/10/16 Javascript
js实现交通灯效果
2017/01/13 Javascript
原生js和css实现图片轮播效果
2017/02/07 Javascript
微信小程序实现星级评分和展示
2018/07/05 Javascript
vue中的适配px2rem示例代码
2018/11/19 Javascript
Vue项目部署的实现(阿里云+Nginx代理+PM2)
2019/03/26 Javascript
vue axios post发送复杂对象问题
2019/06/04 Javascript
小程序Request的另类用法详解
2019/08/09 Javascript
使用Vue生成动态表单
2019/11/26 Javascript
js屏蔽F12审查元素,禁止修改页面代码等实现代码
2020/10/02 Javascript
在VUE中使用lodash的debounce和throttle操作
2020/11/09 Javascript
wxpython 最小化到托盘与欢迎图片的实现方法
2014/06/09 Python
关于反爬虫的一些简单总结
2017/12/13 Python
python文件操作之批量修改文件后缀名的方法
2018/08/10 Python
Python多继承原理与用法示例
2018/08/23 Python
Python 串口读写的实现方法
2019/06/12 Python
基于python实现从尾到头打印链表
2019/11/02 Python
python列表删除和多重循环退出原理详解
2020/03/26 Python
Python代码注释规范代码实例解析
2020/08/14 Python
python基于Kivy写一个图形桌面时钟程序
2021/01/28 Python
css3弹性盒子flex实现三栏布局的实现
2020/11/12 HTML / CSS
Kangol帽子官网:坎戈尔袋鼠
2018/09/26 全球购物
心理健康教育心得体会
2013/12/29 职场文书
《母鸡》教学反思
2014/02/25 职场文书
2019事业单位个人工作总结范文
2019/08/26 职场文书
python Tkinter模块使用方法详解
2022/04/07 Python