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 相关文章推荐
js(JavaScript)实现TAB标签切换效果的简单实例
Feb 26 Javascript
js获取网页可见区域、正文以及屏幕分辨率的高度
May 15 Javascript
百度判断手机终端并自动跳转js代码及使用实例
Jun 11 Javascript
根据当前时间在jsp页面上显示上午或下午
Aug 18 Javascript
js时间戳和c#时间戳互转方法(推荐)
Feb 15 Javascript
详解vue与后端数据交互(ajax):vue-resource
Mar 16 Javascript
微信小程序实现日历功能
Nov 27 Javascript
swiper.js插件实现pc端文本上下滑动功能示例
Dec 03 Javascript
atom-design(Vue.js移动端组件库)手势组件使用教程
May 16 Javascript
vue-router的钩子函数用法实例分析
Oct 26 Javascript
微信小程序自定义顶部组件customHeader的示例代码
Jun 03 Javascript
gojs实现蚂蚁线动画效果
Feb 18 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上传、管理照片示例
2006/10/09 PHP
yii2缓存Caching基本用法示例
2016/07/18 PHP
JavaScript中使用正则匹配多条,且获取每条中的分组数据
2010/11/30 Javascript
解析Jquery取得iframe中元素的几种方法
2013/07/04 Javascript
JavaScript极简入门教程(一):基础篇
2014/10/25 Javascript
Javascript添加监听与删除监听用法详解
2014/12/19 Javascript
jquery zTree异步加载、模糊搜索简单实例分享
2016/03/24 Javascript
基于jQuery倒计时插件实现团购秒杀效果
2016/05/13 Javascript
WebSocket+node.js创建即时通信的Web聊天服务器
2016/08/08 Javascript
封装的dialog插件 基于bootstrap模态对话框的简单扩展
2016/08/10 Javascript
jQuery progressbar通过Ajax请求实现后台进度实时功能
2016/10/11 Javascript
最全的JavaScript开发工具列表 总有一款适合你
2017/06/29 Javascript
利用pm2部署多个node.js项目的配置教程
2017/10/22 Javascript
Vue项目webpack打包部署到Tomcat刷新报404错误问题的解决方案
2018/05/15 Javascript
JavaScript代码调试方法实例小结
2019/01/05 Javascript
vue2.0 获取从http接口中获取数据,组件开发,路由配置方式
2019/11/04 Javascript
常用python数据类型转换函数总结
2014/03/11 Python
Python访问MySQL封装的常用类实例
2014/11/11 Python
详解python之多进程和进程池(Processing库)
2017/06/09 Python
requests和lxml实现爬虫的方法
2017/06/11 Python
13个最常用的Python深度学习库介绍
2017/10/28 Python
pyqt5简介及安装方法介绍
2018/01/31 Python
通过python3实现投票功能代码实例
2019/09/26 Python
wxpython多线程防假死与线程间传递消息实例详解
2019/12/13 Python
django-csrf使用和禁用方式
2020/03/13 Python
详解java调用python的几种用法(看这篇就够了)
2020/12/10 Python
Forever 21美国官网:美国标志性快时尚品牌
2017/02/20 全球购物
追悼会子女答谢词
2014/01/28 职场文书
电子信息专业自荐书
2014/02/04 职场文书
应届生自荐信
2014/06/30 职场文书
2019中秋节祝福语大全,提前收藏啦
2019/09/10 职场文书
分享一些Java的常用工具
2021/06/11 Java/Android
用JS创建一个录屏功能
2021/11/11 Javascript
Vue的生命周期一起来看看
2022/02/24 Vue.js
基于PyQt5制作一个群发邮件工具
2022/04/08 Python
Nginx本地配置SSL访问的实例教程
2022/05/30 Servers