Node+Egg上传文件流到ftp服务器

作为一个Java开发人员,猛的要写一点js,还是有点困难的,搞了几天,终于解决了Node上传流到ftp的问题,保留一下心得吧!

由于项目使用Egg架构,但是Egg很多技术并不完善,网络上都科普不到,所以部分代码使用Node原生实现。

实现上传的主要逻辑如下:

1.用户发起请求,上传文件流;

2.Egg接受文件流(Egg已经封装了这部分技术,使用起来很方便)

3.保存文件流到本地服务器(因为很多公司ftp服务器只有内网访问权限,导致用户无法直接访问,所以需要本地服务器中转)

4.将本地服务器文件上传到ftp服务器

大致上逻辑是这样,多的不说,上代码:

Controller如下:

'use strict';

const Controller = require('egg').Controller;

class ftpController extends Controller{

/**

*@desc 图片上传接口

*/

async fileup() {

const {ctx, service} = this;

let ret = {"result": {}, "data": {}};

//记录日志

ctx.helper.logger(ctx);

// egg-multipart 已经帮我们处理文件二进制对象

// node.js 上传文件需要操作文件流

// 获取上传的文件流,stream 是一个FileStream对象

const stream = await ctx.getFileStream();

//调用服务

try {

//发送请求并返回相应结果

const result = await service.ftp.fileup(stream);

ret.data = result;

ret.result.code = "0";

ret.result.message = "上传文件成功";

} catch (e) {

//记录错误日志

ctx.helper.errorlog(ctx, e);

//处理异常结果

ret.result.code &

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值