麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 開發 > 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教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: chinese中国真实乱对白 | 国产精品视频在 | 欧美一级淫片免费视频黄 | 激情网站免费观看 | 海角在线观看91一区二区 | 爱爱视频天天干 | 精品一二三区视频 | 欧洲精品久久久久69精品 | 黄色免费在线网址 | 亚洲白嫩在线观看 | 老a影视网站在线观看免费 国产精品久久久久久久久久尿 | 久久精品一二三区 | 亚洲精品欧美二区三区中文字幕 | 久久久一区二区三区四区 | 亚洲视频在线观看免费视频 | 中国免费一级毛片 | 曰韩在线视频 | 91亚洲精品一区二区福利 | 国产一国产一级毛片视频 | 久久久久久久爱 | 国产精品自拍片 | 国产精品一区二区免费在线观看 | 中文在线观看视频 | 久久久精品网站 | 最新av在线播放 | 线观看免费完整aaa 久久不雅视频 | 最近中文字幕一区二区 | 爽爽淫人网 | 成人 在线 | 国产一区二区三区欧美 | 亚洲经典视频 | 久久精品视频日本 | 国产69精品久久久久久 | 青青草最新网址 | h视频在线免费观看 | 欧美国产精品一区二区 | 毛片国产 | 成人一级黄色片 | 精品国内视频 | 久久精品一二三区 | 精品一区二区三区欧美 |