分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 技术分享

node egg.js使用superagent做文件转发

发布时间:2023-09-06 02:01责任编辑:傅花花关键词:js

使用 egg.js + superagent 进行文件上传转发

// app/controller/file.jsconst Controller = require('egg').Controller;const fs = require('fs')const request = require('superagent')const sendToWormhole = require('stream-wormhole')const toArray = require('stream-to-array');const path = require('path');const uuid = require('uuid/v1');class FileController extends Controller { ???async file() { ???????const { ctx, app } = this; ???????// 获取上传的文件 ???????let stream; ???????try { ???????????stream = await ctx.getFileStream(); ???????} catch (e) { ???????????console.error('文件不存在或者文件错误'); ???????} ???????if (!stream) { ???????????ctx.throw(403,'文件不存在或者文件错误') ???????????return false; ???????} ???????const nameid = uuid().replace(/-/g, ''); ???????const filename = nameid + '.' + stream.filename.toLowerCase().split('.').pop(); ???????// 文件暂时存在 app/public 文件夹下 ???????const target = path.join(this.config.baseDir, 'app/public', filename); ???????const url = '上传地址'; ???????// 使用 superagent 上传 ???????try { ???????????// 转化stream ???????????const parts = await toArray(stream); ???????????let buf = Buffer.concat(parts); ???????????// 写入文件保存至本地 ???????????fs.writeFileSync(target, buf); ???????????// 上传 ???????????const res = await request ???????????????.post(url) ???????????????.attach('file', target, filename) ???????????ctx.body = res.text; ???????} catch (err) { ???????????// 必须将上传的文件流消费掉,要不然浏览器响应会卡死 ???????????await sendToWormhole(stream); ???????????ctx.throw(500,'文件上传出错'); ???????} ???????????????// 因为只做临时保存,在上传完毕后删除文件 ???????fs.unlink(target, function (err) { ???????????if (!err) { ???????????????console.log('文件已删除:', target); ???????????} ???????}); ???}}module.exports = FileController;

地址资源链接
superagent官方文档

http://visionmedia.github.io/superagent/

egg文件上传参考文档

https://eggjs.org/zh-cn/basics/controller.html#%E8%8E%B7%E5%8F%96%E4%B8%8A%E4%BC%A0%E7%9A%84%E6%96%87%E4%BB%B6

node egg.js使用superagent做文件转发

原文地址:https://www.cnblogs.com/lvyueyang/p/9228289.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved