国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

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

2019-11-19 12:44:32
字體:
供稿:網(wǎng)友

依賴

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 上傳文件獲取參數(shù),希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對武林網(wǎng)網(wǎng)站的支持!

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 巴林右旗| 建始县| 康乐县| 上林县| 海门市| 麻城市| 永城市| 平乡县| 沂源县| 临海市| 五莲县| 孟州市| 巫溪县| 彰武县| 剑河县| 黄梅县| 奎屯市| 蒲江县| 新和县| 泰安市| 那坡县| 靖江市| 阜城县| 铜陵市| 福安市| 铅山县| 乌拉特中旗| 文登市| 磐安县| 凤山县| 阿拉善右旗| 寿宁县| 墨玉县| 桓台县| 托克逊县| 沂水县| 长乐市| 荆门市| 小金县| 若羌县| 南宁市|