Javascript 如何通过NodeJS将文件上载到S3并在浏览器中跟踪进度?
当涉及到文件管理和NodeJS中没有的内容时,我很难理解一些概念,我想知道是否有人能为我指出正确的方向 我有一个上传的队列列表,它将根据用户需要同时发生(允许他们随意暂停或删除下载),我需要点击节点服务器来调整图像大小或根据需要操纵视频。从这里,我需要节点通过S3上传视频或图像,使用AWS-SDK(我设置了一个fakeS3服务器进行常规沙盒测试),在上传过程中,我需要在浏览器中跟踪上传进度 我对节点使用React和服务器端渲染,因此我认为必须有一种非常简单的方法来处理这种情况,但我找不到以前做过这种工作的人。以下是我一直在处理的几个概念: Server.js(核心输入) 中间路线(/上传或其他)Javascript 如何通过NodeJS将文件上载到S3并在浏览器中跟踪进度?,javascript,node.js,aws-sdk,Javascript,Node.js,Aws Sdk,当涉及到文件管理和NodeJS中没有的内容时,我很难理解一些概念,我想知道是否有人能为我指出正确的方向 我有一个上传的队列列表,它将根据用户需要同时发生(允许他们随意暂停或删除下载),我需要点击节点服务器来调整图像大小或根据需要操纵视频。从这里,我需要节点通过S3上传视频或图像,使用AWS-SDK(我设置了一个fakeS3服务器进行常规沙盒测试),在上传过程中,我需要在浏览器中跟踪上传进度 我对节点使用React和服务器端渲染,因此我认为必须有一种非常简单的方法来处理这种情况,但我找不到以前做过
这不起作用,因为主体解析器与路径冲突,multer也有时间(我愿意接受其他建议)关于如何实现这一点的任何信息都将非常棒。我不是在寻找完整的代码,只是另一个让我走上正确道路的想法。谢谢你的帮助 您可以在浏览器和Nodejs路由之间使用套接字通道,并使用httpUploadProgress事件发出事件开始、结束和进度:
var s3obj = new AWS.S3({params: {Bucket: 'myBucket', Key: 'myKey'}});
s3obj.upload({Body: body}).
on('httpUploadProgress', function(evt) {
console.log(evt);
//Emit Here your events
}).
send(function(err, data) { console.log(err, data) });
伙计,你帮我省了两个小时的力气。谢谢
export function uploadContent(req, res) {
const config = {
s3ForcePathStyle: true,
accessKeyId: 'ACCESS_KEY_ID',
secretAccessKey: 'SECRET_ACCESS_KEY',
endpoint: new AWS.Endpoint('http://localhost:4567'), // TODO make live
};
const client = new AWS.S3(config);
const params = {
Key: 'Key',
Bucket: 'Bucket',
Body: fs.createReadStream(req.body.files[0])
};
client.upload(params, function uploadCallback (err, data) {
console.log(err, data);
});
}
var s3obj = new AWS.S3({params: {Bucket: 'myBucket', Key: 'myKey'}});
s3obj.upload({Body: body}).
on('httpUploadProgress', function(evt) {
console.log(evt);
//Emit Here your events
}).
send(function(err, data) { console.log(err, data) });