Javascript 如何通过NodeJS将文件上载到S3并在浏览器中跟踪进度?

Javascript 如何通过NodeJS将文件上载到S3并在浏览器中跟踪进度?,javascript,node.js,aws-sdk,Javascript,Node.js,Aws Sdk,当涉及到文件管理和NodeJS中没有的内容时,我很难理解一些概念,我想知道是否有人能为我指出正确的方向 我有一个上传的队列列表,它将根据用户需要同时发生(允许他们随意暂停或删除下载),我需要点击节点服务器来调整图像大小或根据需要操纵视频。从这里,我需要节点通过S3上传视频或图像,使用AWS-SDK(我设置了一个fakeS3服务器进行常规沙盒测试),在上传过程中,我需要在浏览器中跟踪上传进度 我对节点使用React和服务器端渲染,因此我认为必须有一种非常简单的方法来处理这种情况,但我找不到以前做过

当涉及到文件管理和NodeJS中没有的内容时,我很难理解一些概念,我想知道是否有人能为我指出正确的方向

我有一个上传的队列列表,它将根据用户需要同时发生(允许他们随意暂停或删除下载),我需要点击节点服务器来调整图像大小或根据需要操纵视频。从这里,我需要节点通过S3上传视频或图像,使用AWS-SDK(我设置了一个fakeS3服务器进行常规沙盒测试),在上传过程中,我需要在浏览器中跟踪上传进度

我对节点使用React和服务器端渲染,因此我认为必须有一种非常简单的方法来处理这种情况,但我找不到以前做过这种工作的人。以下是我一直在处理的几个概念:

Server.js(核心输入)

中间路线(/上传或其他)


这不起作用,因为主体解析器与路径冲突,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) });