问题描述
我正在 aws 中以分段方式上传文件,我已经检查了文件大小、缓冲区大小,一切都很好,但是,在 aws 上我有一个 500 兆字节的文件(而不是 100 兆字节...)
可能是什么问题?
我的代码如下:
准备发送和的函数
async function send(uploadID,path,filename,projectTitle) {
let stats = fs.statSync(path);
let data = [];
let readStream = fs.createReadStream(path,{ highWaterMark: 10 * 1024 * 1024});
readStream.on('data',(chunk)=>{
data.push(chunk)
}).on('end',async ()=>{
for (let i = 0; i<data.length; i++){
await $.post(baseUrl + "/signChunk/" + token_g,{
uploadId : uploadID,partNumber : i+1,id : currentProjectID
}).done(async (result)=>{
if(result.response===true){
await putData(result.signedRequest,data[i],i+1,data.length,uploadID);
}
});
}
});
return 0;
}
向远程发送数据的函数(chunk by chunk)
async function putData(url,chunk,id,dataLen,fn,uploadID,attemps = 0){
let part = {"PartNumber" : id,"ETag" : ""};
let opts = {
url : url,method : "PUT",data : {
data: escape(chunk).toString('binary')
}
}
curSize = 0;
$.ajax(opts).done(async (data,status,xhr)=>{
if(xhr.status==200){
part.ETag = xhr.getResponseHeader("etag")
complete.push(part);
if(complete.length>=dataLen){
finalizeUpload(uploadID);
}
} else {
putData(url,attemps++);
}
})
}
async function finalizeUpload(uploadID){
let result = await $.post(baseUrl + "/endMultipart/" + token_g,{
id : currentProjectID,uploadId : uploadID,partsNumbers : complete
});
complete = [];
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)