我想通过带有NodeJS的浏览器直接将一些大文件上传到s3,目前还不清楚如何准备这个文件以便上传到s3.可能有一个更好的模块(如Knox)来处理这种情况,但我不确定.有什么想法吗?
文件对象
file: {
webkitRelativePath: '',
lastModifiedDate: '2013-06-22T02:43:54.000Z',
name: '04-Bro Safari & UFO! - Animal.mp3',
type: 'audio/mp3',
size: 11082039
}
Run Code Online (Sandbox Code Playgroud)
S3 putObject
var params = {Bucket: 'bucket_name/'+req.user._id+'/folder', Key: req.body['file']['name'], Body: ???};
s3.putObject(params, function(err, data) {
if (err)
console.log(err);
else
console.log("Successfully uploaded data to myBucket/myKey");
});
Run Code Online (Sandbox Code Playgroud) 我正在使用aws sdk javascript在亚马逊s3上传文件.
代码:
AWS.config.update({
accessKeyId : 'access-key',
secretAccessKey : 'secret-key'
});
AWS.config.region = 'region';
var bucket = new AWS.S3({params: {Bucket: 'bucket-name'}});
//var fileChooser = document.getElementById('file');
var files = event.target.files;
$.each(files, function(i, file){
//console.log(file.name);
if (file) {
var params = {Key: file.name, ContentType: file.type, Body: file};
bucket.upload(params).on('httpUploadProgress', function(evt) {
console.log("Uploaded :: " + parseInt((evt.loaded * 100) / evt.total)+'%');
if("Uploaded :: " + parseInt((evt.loaded * 100) / evt.total)+'%' == 'Uploaded :: 20%'){
console.log("abort upload");
bucket.abort.bind(bucket);
}
}).send(function(err, data) {
if(err != …Run Code Online (Sandbox Code Playgroud) javascript file-upload amazon-s3 amazon-web-services aws-sdk-js
将我的反应前端的文件发布到节点后端.
request
.post('/api/upload')
.field('fileName', res.body.text)
.field('filePath', `/${this.s3DirName}`) // set dynamically
.attach('file', data.file)
.end((err2, res2) => {
if (err2){
console.log('err2', err2);
this.setState({ error: true, sending: false, success: true });
}else{
console.log('res2', res2);
this.setState({ error: false, sending: false, success: true });
}
});
Run Code Online (Sandbox Code Playgroud)
然后在我的节点后端我想上传到s3.我正在使用busboy来获取发布的多部分文件,然后将aws sdk发送到我的s3存储桶.
var AWS = require('aws-sdk');
const s3 = new AWS.S3({
apiVersion: '2006-03-01',
params: {Bucket: 'bucketName'}
});
static upload(req, res) {
req.pipe(req.busboy);
req.busboy.on('file', (fieldname, file, filename) => {
console.log("Uploading: " + filename);
console.log("file: ", file);
var params = { …Run Code Online (Sandbox Code Playgroud)