首頁  >  文章  >  web前端  >  實例講解thinkjs 檔案上傳功能

實例講解thinkjs 檔案上傳功能

小云云
小云云原創
2017-12-23 10:46:062733瀏覽

本文主要和大家介紹thinkjs 檔案上傳功能,ThinkJS 是一款面向未來開發的 Node.js 框架,整合了大量的專案最佳實踐,讓企業級開發變得如此簡單、有效率。接下來透過本文跟大家分享thinkjs 檔案上傳功能,需要的朋友參考下吧,希望能幫助大家。

特性

  • ##基於Koa 2.x,相容於middleware

  • 核心小巧,支援Extend、Adapter 等外掛程式方式

  • 效能優異,單元測試覆蓋程度高

  • #內建自動編譯、自動更新機制,方便快速開發

  • #使用更優雅的async/await 處理非同步問題,不再支援*/yield

  • 從3.2 開始支援TypeScript

架構

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);
 }
相關推薦:

jQuery實作圖片檔案上傳之前預覽功能

PHP檔案上傳解析

php網頁常見檔案上傳功能的實作實例

以上是實例講解thinkjs 檔案上傳功能的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn