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

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

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

依賴

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;

總結(jié)

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

相關(guān)文章

  • 利用javascript的面向?qū)ο蟮奶匦詫?shí)現(xiàn)限制試用期

    利用javascript的面向?qū)ο蟮奶匦詫?shí)現(xiàn)限制試用期

    Javascript是一種面向?qū)ο蟮哪_本語言,其也具有面向?qū)ο蟮娜筇匦裕墙裉煳覀儾辉敿?xì)的講解javascript的面向?qū)ο筇匦?,今天我們簡單的了解一下javascript的面向?qū)ο筇匦裕缓髮W(xué)習(xí)一下怎樣實(shí)現(xiàn)試用期的限制!
    2011-08-08
  • Electron實(shí)現(xiàn)多標(biāo)簽頁模式詳解

    Electron實(shí)現(xiàn)多標(biāo)簽頁模式詳解

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

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

    xml 封裝與解析 javascript和C#中的分別實(shí)現(xiàn)代碼。
    2009-07-07
  • JS實(shí)現(xiàn)兩表格里數(shù)據(jù)來回轉(zhuǎn)移的方法

    JS實(shí)現(xiàn)兩表格里數(shù)據(jù)來回轉(zhuǎn)移的方法

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

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

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

    JavaScript判斷頁面是否滾動(dòng)到底部的技巧

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

    JavaScript中數(shù)組flat方法的使用與實(shí)現(xiàn)方法

    在Array的顯示原型下有一個(gè)flat方法,可以將多維數(shù)組,降維,傳的參數(shù)是多少就降多少維,下面這篇文章主要給大家介紹了關(guān)于JavaScript中數(shù)組flat方法的使用與實(shí)現(xiàn)的相關(guān)資料,需要的朋友可以參考下
    2022-08-08
  • 小程序?qū)崿F(xiàn)搜索框

    小程序?qū)崿F(xiàn)搜索框

    搜索框無論是在電商網(wǎng)站還是小程序中都很常見,這篇文章主要就為大家詳細(xì)介紹了小程序如何實(shí)現(xiàn)搜索框,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-07-07
  • 小程序?qū)崿F(xiàn)錄音功能

    小程序?qū)崿F(xiàn)錄音功能

    這篇文章主要為大家詳細(xì)介紹了小程序?qū)崿F(xiàn)錄音功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-09-09
  • Javascript下的urlencode編碼解碼方法附decodeURIComponent

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

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

最新評(píng)論

达日县| 武鸣县| 陈巴尔虎旗| 紫阳县| 岳阳县| 琼结县| 旅游| 武陟县| 景洪市| 崇文区| 新民市| 斗六市| 克拉玛依市| 顺平县| 玉门市| 武威市| 鹤庆县| 东明县| 扶余县| 科技| 开江县| 和龙市| 特克斯县| 修文县| 砀山县| 曲靖市| 留坝县| 安阳市| 岫岩| 菏泽市| 蒙山县| 东乡族自治县| 南京市| 永定县| 平原县| 玉门市| 博湖县| 肃宁县| 顺平县| 铁岭县| 涿州市|