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中的一些定位属性[图解]
Jul 14 Javascript
解决JS中乘法的浮点错误的方法
Jan 03 Javascript
javascript获取dom的下一个节点方法
Sep 05 Javascript
JQuery创建DOM节点的方法
Jun 11 Javascript
jquery实现具有收缩功能的垂直导航菜单
Feb 16 Javascript
如何提高Dom访问速度
Jan 05 Javascript
解决JS内存泄露之js对象和dom对象互相引用问题
Jun 25 Javascript
浅谈vue路径优化之resolve
Oct 13 Javascript
vue解决跨域路由冲突问题思路解析
Nov 03 Javascript
JS实现iframe中子父页面跨域通讯的方法分析
Mar 10 Javascript
详解Vue数据驱动原理
Nov 17 Javascript
JavaScript实现页面高亮操作提示和蒙板
Jan 04 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
DC动漫人物排行
2020/03/03 欧美动漫
同时提取多条新闻中的文本一例
2006/10/09 PHP
PHP 翻页 实例代码
2009/08/07 PHP
php下使用iconv需要注意的问题
2010/11/20 PHP
深入理解Yii2.0乐观锁与悲观锁的原理与使用
2017/07/26 PHP
Laravel-admin之修改操作日志的方法
2019/09/30 PHP
jQuery初学:find()方法及children方法的区别分析
2011/01/31 Javascript
jQuery中 noConflict() 方法使用
2013/04/25 Javascript
ExtJS 刷新后如何默认选中刷新前最后一次选中的节点
2014/04/03 Javascript
JavaScript中Cookie操作实例
2015/01/09 Javascript
javascript将数字转换整数金额大写的方法
2015/01/27 Javascript
javascript 数组操作详解
2015/01/29 Javascript
原生js结合html5制作简易的双色子游戏
2015/03/30 Javascript
基于jQuery的左滑出现删除按钮的示例
2017/08/29 jQuery
jQuery中常用动画效果函数知识点整理
2018/08/19 jQuery
微信小程序开发问题之wx.previewImage
2018/12/25 Javascript
JS数组扁平化(flat)方法总结详解
2019/06/24 Javascript
vue封装可复用组件confirm,并绑定在vue原型上的示例
2019/10/31 Javascript
详解JS函数防抖
2020/06/05 Javascript
原生JavaScript实现换肤
2021/02/19 Javascript
Python3如何解决字符编码问题详解
2017/04/23 Python
python实时分析日志的一个小脚本分享
2017/05/07 Python
Python PyQt5标准对话框用法示例
2017/08/23 Python
Python给定一个句子倒序输出单词以及字母的方法
2018/12/20 Python
Python使用百度翻译开发平台实现英文翻译为中文功能示例
2019/08/08 Python
python中的列表与元组的使用
2019/08/08 Python
Django使用中间件解决前后端同源策略问题
2019/09/02 Python
Python 找出英文单词列表(list)中最长单词链
2020/12/14 Python
悦木之源美国官网:Origins美国
2016/08/01 全球购物
瑞士香水购物网站:Parfumcity.ch
2017/01/14 全球购物
兰蔻美国官网:Lancome美国
2017/04/25 全球购物
商场消防安全责任书
2014/07/29 职场文书
婚前财产协议书范本
2014/10/19 职场文书
哈姆雷特读书笔记
2015/06/29 职场文书
中秋节随笔
2015/08/15 职场文书
幼儿园音乐教学反思
2016/02/18 职场文书