最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Egg.js 中 AJax 上傳文件獲取參數的方法

 更新時間:2018年10月10日 11:03:05   作者:公旦  
這篇文章主要介紹了Egg.js 中 AJax 上傳文件獲取參數,需要的朋友可以參考下

依賴

formidable

代碼

前端

<fieldset style="margin: 20px; padding: 20px;">
 <legend>單文件,Ajax</legend>
 <form id="form3">
  <div>
   <input type="text" id="customName" placeholder="自定義文件名" />
  </div>
  <div>
   <input type="file" class="file" />
  </div>
  <div>
   <input type="submit" value="上傳">
  </div>
 </form>
</fieldset>

<fieldset style="margin: 20px; padding: 20px;">
 <legend>多文件,Ajax</legend>
 <form id="form4">
  <div>
   <input type="file" class="file" multiple />
  </div>
  <div>
   <input type="submit" value="上傳" />
  </div>
 </form>
</fieldset>
<script>
 $(function () {
  const _csrf = "{{ ctx.csrf | safe }}";
  $('form').submit(function (e) {
   e.preventDefault();
   const formData = new FormData();
   const fileList = $(this).find('.file')[0].files;
   let index = 0;
   for (let key of fileList) {
    formData.append('file' + index, key);
    index++
   }
   formData.append('isAjax', 'yes');
   formData.append('customName', $(this).find('#customName').val() || '');
   $.ajax({
    url: '/admin/file/upload?_csrf=' + _csrf,
    data: formData,
    method: 'POST',
    contentType: false,
    processData: false,
    success: function (result) {

    },
    error: function (responseStr) {
     alert("error", responseStr);
    }
   });
  });
 });
</script>

Node

'use strict';
const fs = require('fs');
const path = require('path');
const awaitWriteStream = require('await-stream-ready').write;
const sendToWormhole = require('stream-wormhole');
const formidable = require("formidable");
const Controller = require('../../core/base_controller');
class FileController extends Controller {
 async parse(req) {
  const form = new formidable.IncomingForm();
  return new Promise((resolve, reject) => {
   form.parse(req, (err, fields, files) => {
    resolve({ fields, files })
   })
  });
 }
 /**
 * 上傳文件,兼容單文件和多文件
 * @param customName 單文件自定義文件名
 * @param isAjax 上傳方式
 */
 async upload() {
  const { ctx, logger } = this;
  const extraParams = await this.parse(ctx.req);
  let { multipleFile, customName, isAjax } = extraParams && extraParams['fields'];
  logger.info(multipleFile, customName, isAjax);
  if (isAjax === 'yes') {
   const urls = [];
   for (let key in extraParams.files) {
    const file = extraParams.files[key];
    logger.info('file.name', file.name);
    logger.info('customName', customName);
    const stream = fs.createReadStream(file.path);
    const fileName = customName ? (customName + path.extname(file.name)) : file.name;
    const target = path.join(this.config.baseDir, 'app/public/upload', fileName);
    const writeStream = fs.createWriteStream(target);
    try {
     await awaitWriteStream(stream.pipe(writeStream));
    } catch (err) {
     await sendToWormhole(stream);
     throw err;
    }
    urls.push(target);
   }
   this.success({ urls })
  }
 }
}
module.exports = FileController;

總結

以上所述是小編給大家介紹的Egg.js 中 AJax 上傳文件獲取參數,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網站的支持!

相關文章

  • 利用javascript的面向對象的特性實現限制試用期

    利用javascript的面向對象的特性實現限制試用期

    Javascript是一種面向對象的腳本語言,其也具有面向對象的三大特性,但是今天我們不詳細的講解javascript的面向對象特性,今天我們簡單的了解一下javascript的面向對象特性,然后學習一下怎樣實現試用期的限制!
    2011-08-08
  • Electron實現多標簽頁模式詳解

    Electron實現多標簽頁模式詳解

    Electron 都發(fā)展這么多年了,讓人想不到的是,要實現一個多標簽頁的功能居然沒有能用的輪子,本文就來用比較low的方案 - iframe手搓一個吧
    2024-11-11
  • xml 封裝與解析(javascript和C#中)

    xml 封裝與解析(javascript和C#中)

    xml 封裝與解析 javascript和C#中的分別實現代碼。
    2009-07-07
  • JS實現兩表格里數據來回轉移的方法

    JS實現兩表格里數據來回轉移的方法

    這篇文章主要介紹了JS實現兩表格里數據來回轉移的方法,涉及javascript鼠標事件及頁面元素的相關操作技巧,需要的朋友可以參考下
    2015-05-05
  • js面試題之異步問題的深入理解

    js面試題之異步問題的深入理解

    這篇文章主要給大家介紹了關于js面試題之異步問題的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-09-09
  • JavaScript判斷頁面是否滾動到底部的技巧

    JavaScript判斷頁面是否滾動到底部的技巧

    在 JavaScript 中,我們可以通過一些技巧來判斷頁面是否滾動到底部,本文將介紹一些常用的方法,幫助你在項目中實現這一功能,文中通過代碼示例介紹的非常詳細,需要的朋友可以參考下
    2023-11-11
  • JavaScript中數組flat方法的使用與實現方法

    JavaScript中數組flat方法的使用與實現方法

    在Array的顯示原型下有一個flat方法,可以將多維數組,降維,傳的參數是多少就降多少維,下面這篇文章主要給大家介紹了關于JavaScript中數組flat方法的使用與實現的相關資料,需要的朋友可以參考下
    2022-08-08
  • 小程序實現搜索框

    小程序實現搜索框

    搜索框無論是在電商網站還是小程序中都很常見,這篇文章主要就為大家詳細介紹了小程序如何實現搜索框,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-07-07
  • 小程序實現錄音功能

    小程序實現錄音功能

    這篇文章主要為大家詳細介紹了小程序實現錄音功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-09-09
  • Javascript下的urlencode編碼解碼方法附decodeURIComponent

    Javascript下的urlencode編碼解碼方法附decodeURIComponent

    而本文,就大概說說如何在js中通過系統(tǒng)自帶的函數去解決這個問題。
    2010-04-04

最新評論

孟州市| 安乡县| 卢湾区| 独山县| 三穗县| 泰兴市| 合作市| 太白县| 准格尔旗| 汉沽区| 牡丹江市| 昌江| 永顺县| 麻城市| 凤冈县| 玛纳斯县| 绥德县| 克东县| 平安县| 巧家县| 常宁市| 名山县| 虹口区| 灌南县| 民县| 饶平县| 青铜峡市| 依安县| 大化| 安达市| 大同县| 阳朔县| 十堰市| 吉隆县| 渭南市| 察隅县| 固阳县| 彩票| 牙克石市| 全南县| 西畴县|