egg.js ajax上传文件,上传图片功能不会使用

本文探讨了前端使用FormData配合Ajax进行文件上传,以及Node.js利用ctx.getFileStream()处理文件流上传至AWS S3的过程。遇到的问题是小文件上传成功,大文件上传失败,解决方案是正确处理Buffer数据。配置了multipart中间件以支持大文件和多种文件类型的上传。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

node 12.13.0

egg:2.28.0

前端代码:

var formData = new FormData();

formData.append("file",file.raw);

$.ajax({

url: _baseURL+url,

data:formData,

type: 'POST',

dataType:'json',

processData:false,

contentType:false,

success: successBack,

fail: fail

});

node代码 上传文件到aws s3上

var stream = await ctx.getFileStream();

var avs = await this.ctx.curl(params, {

headers:{

"Content-Type":"application/octet-stream",

},

data:stream,

method: 'PUT',

timeout: 60000,

})

配置代码:config.multipart= {

fieldSize: '50mb',

fields: 10,

fileSize: '50mb',

files: 10,

fileExtensions: [ '.txt','.rar','.zip','.bin' ], // 增加对 txt 扩展名的文件支持

mode: 'stream',

}

上传的文件只有几百b,如果改为var streams=stream._readableState.buffer.head.data;上传小文件可以,文件只有60多kb

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值