‘use strict‘;const Service = require(‘egg‘).Service;const fs = require(‘fs‘);const path = require(‘path‘);const sendToWormhole = require(‘stream-wormhole‘);class UploadService extends Service { ?async index() { ???const ctx = this.ctx; ???const stream = await ctx.getFileStream(); ???const fileName = stream.filename; ???????let target ?= path.join(this.config.baseDir, `app/public/comfiles/${stream.filename}`); ???const result = await new Promise((resolve, reject) => { ???????const remoteFileStream = fs.createWriteStream(target); ???????stream.pipe(remoteFileStream); ???????let errFlag; ???????remoteFileStream.on(‘error‘, err => { ???????????errFlag = true; ???????????sendToWormhole(stream); ???????????remoteFileStream.destroy(); ???????????reject(err); ???????}); ???????????????remoteFileStream.on(‘finish‘, async () => { ???????????if (errFlag) return; ???????????resolve({ fileName, name: stream.fields.name }); ???????}); ?????}); ???return result; ???}}module.exports = UploadService;
弄了一个下午,终于弄清楚了,MD.碎觉
egg.js上传文件到本地
原文地址:https://www.cnblogs.com/qq735675958/p/9315694.html