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 无符号右移运算符
Apr 17 Javascript
几个javascript操作word的参考代码
Oct 26 Javascript
js this函数调用无需再次抓获id,name或标签名
Mar 03 Javascript
javascript自定义的addClass()方法
May 28 Javascript
JS使用parseInt解析数字实现求和的方法
Aug 05 Javascript
纯javascript模仿微信打飞机小游戏
Aug 20 Javascript
jQuery时间插件jquery.clock.js用法实例(5个示例)
Jan 14 Javascript
jQuery操作动态生成的内容的方法
May 28 Javascript
JS制作图形验证码实现代码
Oct 19 Javascript
微信小程序学习总结(三)条件、模板、文件引用实例分析
Jun 04 Javascript
JavaScript事件循环及宏任务微任务原理解析
Sep 02 Javascript
vue 将多个过滤器封装到一个文件中的代码详解
Sep 05 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
在Windows中安装Apache2和PHP4的权威指南
2006/10/09 PHP
PHP $_SERVER详解
2009/01/16 PHP
让的PHP代码飞起来的40条小技巧(提升php效率)
2010/04/12 PHP
19个超实用的PHP代码片段
2014/03/14 PHP
在laravel中使用Symfony的Crawler组件分析HTML
2017/06/19 PHP
PHP开发api接口安全验证操作实例详解
2020/03/26 PHP
js停止输出代码
2008/07/20 Javascript
JSChart轻量级图形报表工具(内置函数中文参考)
2010/10/11 Javascript
编写高效jQuery代码的4个原则和5个技巧
2014/04/24 Javascript
如何让浏览器支持jquery ajax load 前进、后退功能
2014/06/12 Javascript
初识Node.js
2014/09/03 Javascript
浅析node.js中close事件
2014/11/26 Javascript
JavaScript实现简单精致的图片左右无缝滚动效果
2017/03/16 Javascript
快速掌握jquery分页插件jqPaginator的使用方法
2017/08/09 jQuery
浅谈Angular4中常用管道
2017/09/27 Javascript
jquery+ajaxform+springboot控件实现数据更新功能
2018/01/22 jQuery
微信小程序icon组件使用详解
2018/01/31 Javascript
vue+SSM实现验证码功能
2018/12/07 Javascript
Vue $mount实战之实现消息弹窗组件
2019/04/22 Javascript
js常见遍历操作小结
2019/06/06 Javascript
js实现简单掷骰子效果
2019/10/24 Javascript
vue 封装面包屑组件教程
2020/11/16 Javascript
[15:23]教你分分钟做大人:虚空假面
2014/10/30 DOTA
将图片文件嵌入到wxpython代码中的实现方法
2014/08/11 Python
Python中的类学习笔记
2014/09/23 Python
Python对象类型及其运算方法(详解)
2017/07/05 Python
Django基础知识与基本应用入门教程
2018/07/20 Python
使用Python获取并处理IP的类型及格式方法
2018/11/01 Python
python3获取文件中url内容并下载代码实例
2019/12/27 Python
使用python处理题库表格并转化为word形式的实现
2020/04/14 Python
python logging通过json文件配置的步骤
2020/04/27 Python
python利用tkinter实现图片格式转换的示例
2020/09/28 Python
css3实现可拖动的魔方3d效果
2019/05/07 HTML / CSS
优秀求职信范文分享
2013/12/19 职场文书
餐厅考勤管理制度
2014/01/28 职场文书
victoriaMetrics库布隆过滤器初始化及使用详解
2022/04/05 Golang