gpt4 book ai didi

javascript - Streaming-s3 没有正确上传文件到 aws

转载 作者:数据小太阳 更新时间:2023-10-29 04:49:00 25 4
gpt4 key购买 nike

我正在使用 nodejs 将文件上传到 aws 服务器。并发现文件大小不正确。我得到 2.1KB。

这是我的代码

var uploadFile = function (fileReadStream, awsHeader, cb) {

//set options for the streaming module
var options = {
concurrentParts: 2,
waitTime: 20000,
retries: 2,
maxPartSize: 10 * 1024 * 1024
};
//call stream function to upload the file to s3
var uploader = new streamingS3(fileReadStream, config.aws.accessKey, config.aws.secretKey, awsHeader, options);
//start uploading
uploader.begin();// important if callback not provided.

// handle these functions
uploader.on('data', function (bytesRead) {
//console.log(bytesRead, ' bytes read.');
});

uploader.on('part', function (number) {
//console.log('Part ', number, ' uploaded.');
});

// All parts uploaded, but upload not yet acknowledged.
uploader.on('uploaded', function (stats) {
//console.log('Upload stats: ', stats);
});

uploader.on('finished', function (response, stats) {
console.log(response);
cb(null, response);
});

uploader.on('error', function (err) {
console.log('Upload error: ', err);
cb(err);
});
};

不过,我的 aws 存储桶中有文件名。但后来我尝试打开它说失败的文件。

我正在尝试从 url 上传此文件:https://arxiv.org/pdf/1701.00003.pdf

最佳答案

不再需要用于将流上传到 s3 的外部模块。现在 aws-sdk 中有一个名为 s3.upload 的新方法,它可以上传任意大小的缓冲区、blob 或流。可以查看文档here

我使用的代码:

const aws = require('aws-sdk');
const s3 = new aws.S3({
credentials:{
accessKeyId: "ACCESS_KEY",
secretAccessKey: "SECRET_ACCESS_KEY"
}
});
const fs = require('fs');
const got = require('got');

//fs stream test
s3.upload({
Bucket: "BUCKET_NAME",
Key: "FILE_NAME",
ContentType: 'text/plain',
Body: fs.createReadStream('SOME_FILE')
})
.on("httpUploadProgress", progress => console.log(progress))
.send((err,resp) => {
if(err) return console.error(err);
console.log(resp);
})


//http stream test
s3.upload({
Bucket: "BUCKET_NAME",
Key: "FILE_NAME",
ContentType: 'application/pdf',
Body: got.stream('https://arxiv.org/pdf/1701.00003.pdf')
})
.on("httpUploadProgress", progress => console.log(progress))
.send((err,resp) => {
if(err) return console.error(err);
console.log(resp);
})

为了进一步证明我的观点,我用你在问题中发布的 pdf 尝试了代码,这里是 link我的测试桶显示 pdf 按预期工作。

关于javascript - Streaming-s3 没有正确上传文件到 aws,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43775485/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com