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高级程序设计(第3版)学习笔记 概述
Oct 11 Javascript
jQuery基础框架浅入剖析
Dec 27 Javascript
jquery中的工具使用方法$.isFunction, $.isArray(), $.isWindow()
Aug 09 Javascript
Javascript oop设计模式 面向对象编程简单实例介绍
Dec 13 Javascript
深入理解vue.js中的v-if和v-show
Jun 22 Javascript
webpack-dev-server远程访问配置方法
Feb 22 Javascript
vue中简单弹框dialog的实现方法
Feb 26 Javascript
10种JavaScript最常见的错误(小结)
Jun 21 Javascript
vue如何实现自定义底部菜单栏
Jul 01 Javascript
Vue.js数字输入框组件使用方法详解
Oct 19 Javascript
关于JavaScript轮播图的实现
Nov 20 Javascript
JavaScript实现两个数组的交集
Mar 25 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防止站外远程提交表单的方法
2014/10/20 PHP
对laravel的session获取与存取方法详解
2019/10/08 PHP
javascript设置金额样式转换保留两位小数示例代码
2013/12/04 Javascript
jquery的live使用注意事项
2014/02/18 Javascript
Webpack 实现 AngularJS 的延迟加载
2016/03/02 Javascript
jQuery实现图片加载完成后改变图片大小的方法
2016/03/29 Javascript
js无法获取到html标签的属性的解决方法
2016/07/26 Javascript
JS中数组重排序方法
2016/11/11 Javascript
jQuery实现模糊搜索功能的方法分析
2018/06/29 jQuery
JavaScript实现点击出现图片并统计点击次数功能示例
2018/07/23 Javascript
Nodejs调用Dll模块的方法
2018/09/17 NodeJs
Vue源码分析之Vue实例初始化详解
2019/08/25 Javascript
解决layui批量传值到后台操作时出现传值为空的问题
2019/09/28 Javascript
小程序如何写动态标签的实现方法
2020/02/05 Javascript
Bootstrap实现前端登录页面带验证码功能完整示例
2020/03/26 Javascript
Javascript实现打鼓效果
2021/01/29 Javascript
[01:01]2020完美高校联赛(秋)西安落幕
2021/03/11 DOTA
Python机器学习之决策树算法实例详解
2017/12/06 Python
Jupyter notebook在mac:linux上的配置和远程访问的方法
2019/01/14 Python
python3 线性回归验证方法
2019/07/09 Python
django如何通过类视图使用装饰器
2019/07/24 Python
django实现用户注册实例讲解
2019/10/30 Python
python自动化实现登录获取图片验证码功能
2019/11/20 Python
Python简单实现区域生长方式
2020/01/16 Python
基于python3实现倒叙字符串
2020/02/18 Python
keras 模型参数,模型保存,中间结果输出操作
2020/07/06 Python
澳大利亚手表品牌:Time IV Change
2018/10/06 全球购物
Anthropologie英国:美国家喻户晓的休闲服装和家居产品品牌
2018/12/05 全球购物
毕业生找工作的求职信范文
2013/12/24 职场文书
抵押贷款承诺书
2014/05/30 职场文书
2014年服装销售工作总结
2014/11/27 职场文书
2016学校元旦晚会经典开场白台词
2015/12/03 职场文书
《莫泊桑拜师》教学反思
2016/02/22 职场文书
Nginx快速入门教程
2021/03/31 Servers
MySQL系列之十 MySQL事务隔离实现并发控制
2021/07/02 MySQL
MySQL 计算连续登录天数
2022/05/11 MySQL