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 相关文章推荐
Prototype1.6 JS 官方下载地址
Nov 30 Javascript
jQuery防止click双击多次提交及传递动态函数或多参数
Apr 02 Javascript
js检测iframe是否加载完成的方法
Nov 26 Javascript
浅谈js的html元素的父节点,子节点
Aug 06 Javascript
javascript验证手机号和实现星号(*)代替实例
Aug 16 Javascript
bootstrap使用validate实现简单校验功能
Dec 02 Javascript
jQuery实现手机上输入后隐藏键盘功能
Jan 04 Javascript
js仿百度音乐全选操作
Jan 13 Javascript
Django+Vue跨域环境配置详解
Jul 06 Javascript
微信小程序日历弹窗选择器代码实例
May 09 Javascript
微信小程序的开发范式BeautyWe.js入门详解
Jul 10 Javascript
如何用JS模拟实现数组的map方法
Jul 30 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 管理系统程序中的后门
2009/08/05 PHP
PHP迅雷、快车、旋风下载专用链转换代码
2010/06/15 PHP
浅析php数据类型转换
2014/01/09 PHP
php判断数组元素中是否存在某个字符串的方法
2014/06/14 PHP
php set_include_path函数设置 include_path 配置选项
2016/10/30 PHP
疯掉了,尽然有js写的操作系统
2007/04/23 Javascript
php图像生成函数之间的区别分析
2012/12/06 Javascript
javascript不可用的问题探究
2013/10/01 Javascript
jQuery setTimeout传递字符串参数报错的解决方法
2014/06/09 Javascript
javascript实现字符串反转的方法
2015/02/05 Javascript
JS实现网页上随机产生超链接地址的方法
2015/11/09 Javascript
Jquery Ajax Error 调试错误的技巧
2015/11/20 Javascript
JavaScript对象创建模式实例汇总
2016/10/03 Javascript
网络传输协议(http协议)
2016/11/18 Javascript
使用jQuery实现动态添加小广告
2017/07/11 jQuery
js模拟百度模糊搜索的实例
2017/08/04 Javascript
nodejs 图解express+supervisor+ejs的用法(推荐)
2017/09/08 NodeJs
详解如何用模块化的方式写vuejs
2017/12/16 Javascript
总结js函数相关知识点
2018/02/27 Javascript
详谈vue+webpack解决css引用图片打包后找不到资源文件的问题
2018/03/06 Javascript
python定时器使用示例分享
2014/02/16 Python
用matplotlib画等高线图详解
2017/12/14 Python
pandas把dataframe转成Series,改变列中值的类型方法
2018/04/10 Python
实践Vim配置python开发环境
2018/07/02 Python
Python使用装饰器模拟用户登陆验证功能示例
2018/08/24 Python
python中join()方法介绍
2018/10/11 Python
将string类型的数据类型转换为spark rdd时报错的解决方法
2019/02/18 Python
Python如何使用神经网络进行简单文本分类
2021/02/25 Python
物流仓管员工作职责
2014/01/06 职场文书
2014爱耳日宣传教育活动总结
2014/03/09 职场文书
大学生活动总结模板
2014/07/02 职场文书
四风问题查摆材料
2014/08/25 职场文书
少先队中队工作总结2015
2015/07/23 职场文书
MySQL数据库压缩版本安装与配置详细教程
2021/05/21 MySQL
Shell脚本一键安装Nginx服务自定义Nginx版本
2022/03/20 Servers
Docker容器harbor私有仓库部署和管理
2022/08/05 Servers