我尝试通过multiparty实现s3上传,但它不起作用。
有两个问题取决于byteCount
变量。
如果我设置了ContentLenght:part.byteCount
,则s3文件上传无效。
但是,如果我省略ContentLength:part.byteCount
,s3文件上传工作正常。
但是上传了整个文件的唯一部分(流的块?)。
例如)源文件大小:100kb,上传文件大小:20kb
我的代码如下。我的代码有问题吗?:
var form = new multiparty.Form();
form.on('field',function(name,value){
});
form.on('close',function(){
res.json({success:true});
});
form.on('part',function(part){
if(!part.filename) {
part.resume();
}
s3 = new AWS.S3();
var params = {Bucket: s3bucket, Key: tempFileName, Body: part, ContentLength:part.byteCount};
s3.upload(params, function(err, data) {
console.log('s3 upload');
});
part.on('data',function(chunk){
console.log(part.filename+' read '+chunk.length + 'bytes');
});
part.on('end',function(){
console.log(part.filename+' Part read complete');
});
});
form.on('progress',function(byteRead,byteExpected){
console.log(' Reading total '+byteRead+'/'+byteExpected);
});
form.on('error', function(err) {
console.log('err');
});
form.parse(req);