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 相关文章推荐
jQuery 标题的自动翻转实现代码
Oct 14 Javascript
div当滚动到页面顶部的时候固定在顶部实例代码
May 27 Javascript
如何在指定的地方插入html内容和文本内容
Dec 23 Javascript
JS 根据子网掩码,网关计算出所有IP地址范围示例
Apr 23 Javascript
jQuery插件ajaxFileUpload异步上传文件
Oct 19 Javascript
DropDownList控件绑定数据源的三种方法
Dec 24 Javascript
解决微信内置浏览器返回上一页强制刷新问题方法
Feb 05 Javascript
JS实现复选框的全选和批量删除功能
Apr 05 Javascript
浅谈vue中改elementUI默认样式引发的static与assets的区别
Feb 03 Javascript
angular6开发steps步骤条组件
Jul 04 Javascript
JS如何在数组指定位置插入元素
Mar 10 Javascript
Vue-CLI 3 scp2自动部署项目至服务器的方法
Jul 24 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
探讨方法的重写(覆载)详解
2013/06/08 PHP
php ci框架验证码实例分析
2013/06/26 PHP
PHP的Laravel框架中使用消息队列queue及异步队列的方法
2016/03/21 PHP
修改Laravel5.3中的路由文件与路径
2016/08/10 PHP
CentOS 上搭建 PHP7 开发测试环境
2017/02/26 PHP
浅谈PHP中new self()和new static()的区别
2017/08/11 PHP
javascript 判断中文字符长度的函数代码
2012/08/27 Javascript
jQuery对html元素取值与赋值的方法
2013/11/20 Javascript
js 判断js函数、变量是否存在的简单示例代码
2014/03/04 Javascript
javascript事件函数中获得事件源的两种不错方法
2014/03/17 Javascript
原生js获取宽高与jquery获取宽高的方法关系对比
2014/04/04 Javascript
javascript实现阻止iOS APP中的链接打开Safari浏览器
2014/06/12 Javascript
jquery实现侧边弹出的垂直导航
2014/12/09 Javascript
Jquery搜索父元素操作方法
2015/02/10 Javascript
jQuery往textarea中光标所在位置插入文本的方法
2015/06/26 Javascript
Jquery数字上下滚动动态切换插件
2015/08/08 Javascript
JS获取input file绝对路径的方法(推荐)
2016/08/02 Javascript
微信小程序 倒计时组件实现代码
2016/10/24 Javascript
基于JavaScript实现类名的添加与移除
2017/04/23 Javascript
React-Native 组件之 Modal的使用详解
2017/08/08 Javascript
JavaScript使用享元模式实现文件上传优化操作示例
2018/08/07 Javascript
webpack4 从零学习常用配置(小结)
2019/05/28 Javascript
基于vue手写tree插件的那点事儿
2019/08/20 Javascript
vue开发chrome插件,实现获取界面数据和保存到数据库功能
2020/12/01 Vue.js
线程和进程的区别及Python代码实例
2015/02/04 Python
python使用socket进行简单网络连接的方法
2015/04/29 Python
详解常用查找数据结构及算法(Python实现)
2016/12/09 Python
windows环境下tensorflow安装过程详解
2018/03/30 Python
Python学习_几种存取xls/xlsx文件的方法总结
2018/05/03 Python
python 19个值得学习的编程技巧
2020/08/15 Python
史上最详细的Python打包成exe文件教程
2021/01/17 Python
2015年学生会工作总结范文
2015/03/31 职场文书
环保宣传语大全
2015/07/13 职场文书
小学教师教育随笔
2015/08/14 职场文书
nginx网站服务如何配置防盗链(推荐)
2021/03/31 Servers
Mysql 文件配置解析介绍
2022/05/06 MySQL