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

首頁 > 開發 > AJAX > 正文

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

2024-09-01 08:33:59
字體:
來源:轉載
供稿:網友

依賴

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


注:相關教程知識閱讀請移步到JavaScript/Ajax教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 枣阳市| 竹山县| 昌平区| 穆棱市| 恩施市| 固阳县| 永平县| 炎陵县| 滦平县| 吉安市| 襄樊市| 肇东市| 清流县| 济阳县| 衡阳县| 南雄市| 浦北县| 扎鲁特旗| 佛教| 宣威市| 杭锦旗| 增城市| 邓州市| 江达县| 昭通市| 湟源县| 涞水县| 溧阳市| 建德市| 诸暨市| 乌鲁木齐县| 栾川县| 桃园县| 岳阳县| 岱山县| 台江县| 海宁市| 富锦市| 环江| 双辽市| 德兴市|