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 相关文章推荐
如何实现JS函数的重载
Sep 22 Javascript
ie支持function.bind()方法实现代码
Dec 27 Javascript
事件冒泡是什么如何用jquery阻止事件冒泡
Mar 20 Javascript
jquery判断checkbox是否选中及改变checkbox状态的实现方法
May 26 Javascript
Jquery组件easyUi实现选项卡切换示例
Aug 23 Javascript
javascript cookie用法基础教程(概念,设置,读取及删除)
Sep 20 Javascript
jQuery设置和获取select、checkbox、radio的选中值方法
Jan 01 Javascript
详解本地Node.js服务器作为api服务器的解决办法
Feb 28 Javascript
Webpack之tree-starking 解析
Sep 11 Javascript
vue开发环境配置跨域的方法步骤
Jan 16 Javascript
Vue实现开心消消乐游戏算法
Oct 22 Javascript
Vue v-model组件封装(类似弹窗组件)
Jan 08 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
在Zeus Web Server中安装PHP语言支持
2006/10/09 PHP
php 防止单引号,双引号在接受页面转义
2008/07/10 PHP
用PHP写的基于Memcache的Queue实现代码
2011/11/27 PHP
php调用c接口无错版介绍
2014/03/11 PHP
js 操作符实例代码
2009/10/24 Javascript
JavaScript避免代码的重复执行经验技巧分享
2014/04/17 Javascript
JS创建类和对象的两种不同方式
2014/08/08 Javascript
js数值计算时使用parseInt进行数据类型转换(jquery)
2014/10/07 Javascript
一个JavaScript获取元素当前高度的实例
2014/10/29 Javascript
Bootstrap教程JS插件滚动监听学习笔记分享
2016/05/18 Javascript
JQuery 传送中文乱码问题的简单解决办法
2016/05/24 Javascript
将List对象列表转换成JSON格式的类实现方法
2016/07/04 Javascript
基于MVC+EasyUI的web开发框架之使用云打印控件C-Lodop打印页面或套打报关运单信息
2016/08/29 Javascript
jQuery Ajax请求后台数据并在前台接收
2016/12/10 Javascript
详解angularjs获取元素以及angular.element()用法
2017/07/25 Javascript
解决vue接口数据赋值给data没有反应的问题
2018/08/27 Javascript
Vue中使用clipboard实现复制功能
2018/09/05 Javascript
Python lambda和Python def区别分析
2014/11/30 Python
利用python求相邻数的方法示例
2017/08/18 Python
浅谈Python NLP入门教程
2017/12/25 Python
Python中collections模块的基本使用教程
2018/12/07 Python
Python编程图形库之Pillow使用方法讲解
2018/12/28 Python
pyshp创建shp点文件的方法
2018/12/31 Python
详解爬虫被封的问题
2019/04/23 Python
如何使用Flask-Migrate拓展数据库表结构
2019/07/24 Python
如何在Django中使用聚合的实现示例
2020/03/23 Python
自定义实现 PyQt5 下拉复选框 ComboCheckBox的完整代码
2020/03/30 Python
Django多层嵌套ManyToMany字段ORM操作详解
2020/05/19 Python
python def 定义函数,调用函数方式
2020/06/02 Python
HTML5本地存储之Web Storage应用介绍
2013/01/06 HTML / CSS
语文教育专业推荐信范文
2013/11/25 职场文书
大学自主招生自荐信
2013/12/16 职场文书
《乌鸦和狐狸》教学反思
2014/02/08 职场文书
《雨点儿》教学反思
2014/04/14 职场文书
JS数组方法some、every和find的使用详情
2021/10/05 Javascript
MySQL 语句执行顺序举例解析
2022/06/05 MySQL