Javascript 使用Promisify从回调转换为异步等待格式后,AWS S3上载不起作用
我正在使用方法从浏览器中的React应用程序将文件上载到S3 bucket 具体情况如下:Javascript 使用Promisify从回调转换为异步等待格式后,AWS S3上载不起作用,javascript,amazon-web-services,amazon-s3,promise,aws-sdk,Javascript,Amazon Web Services,Amazon S3,Promise,Aws Sdk,我正在使用方法从浏览器中的React应用程序将文件上载到S3 bucket 具体情况如下: var params = {Bucket: 'bucket', Key: 'key', Body: stream}; s3.upload(params, function(err, data) { console.log(err, data); }); 我将其包装为,使其像异步一样工作,如下所示: const AWS = require('aws-sdk'); const { promisify }
var params = {Bucket: 'bucket', Key: 'key', Body: stream};
s3.upload(params, function(err, data) {
console.log(err, data);
});
我将其包装为,使其像异步一样工作,如下所示:
const AWS = require('aws-sdk');
const { promisify } = require('es6-promisify');
... <in my React component> ...
async uploadFile() {
try {
var params = {
Bucket: <BucketName>,
Key: <KeyName>,
Body: <File Stream>
};
const res = await uploadToS3Async(params);
console.log(res);
} catch (error) {
console.log(error);
}
}
您不需要使用
es6 promisify
你可以做:
try {
const params = {Bucket: 'bucket', Key: 'key', Body: stream};
const data = await s3.upload(params).promise();
console.log(data);
}
catch (err) {
console.log(err);
}
您不需要使用
es6 promisify
你可以做:
try {
const params = {Bucket: 'bucket', Key: 'key', Body: stream};
const data = await s3.upload(params).promise();
console.log(data);
}
catch (err) {
console.log(err);
}
如果您想让它成为一个
承诺
,那么您可以简单地实现这样的目标
aws.js
const params = {
Bucket: 'bucket',
Key: 'key',
Body: stream
};
const awsService = {};
awaService.upload = () => {
return new Promise((resolve, reject) => {
s3.upload(params, function(err, data) {
if (err) {
return reject(err);
}
return resolve(data);
});
});
};
module.exports = awsService;
const awsService = require('./awsService');
const utils = {};
utils.upload = async () => {
try {
const result = await awsService.upload();
return result;
} catch (err) {
console.log(err);
throw err;
}
};
module.exports = utils;
在另一个文件上,像这样调用
util.js
const params = {
Bucket: 'bucket',
Key: 'key',
Body: stream
};
const awsService = {};
awaService.upload = () => {
return new Promise((resolve, reject) => {
s3.upload(params, function(err, data) {
if (err) {
return reject(err);
}
return resolve(data);
});
});
};
module.exports = awsService;
const awsService = require('./awsService');
const utils = {};
utils.upload = async () => {
try {
const result = await awsService.upload();
return result;
} catch (err) {
console.log(err);
throw err;
}
};
module.exports = utils;
如果您想让它成为一个
承诺
,那么您可以像这样简单地实现
aws.js
const params = {
Bucket: 'bucket',
Key: 'key',
Body: stream
};
const awsService = {};
awaService.upload = () => {
return new Promise((resolve, reject) => {
s3.upload(params, function(err, data) {
if (err) {
return reject(err);
}
return resolve(data);
});
});
};
module.exports = awsService;
const awsService = require('./awsService');
const utils = {};
utils.upload = async () => {
try {
const result = await awsService.upload();
return result;
} catch (err) {
console.log(err);
throw err;
}
};
module.exports = utils;
在另一个文件上,像这样调用
util.js
const params = {
Bucket: 'bucket',
Key: 'key',
Body: stream
};
const awsService = {};
awaService.upload = () => {
return new Promise((resolve, reject) => {
s3.upload(params, function(err, data) {
if (err) {
return reject(err);
}
return resolve(data);
});
});
};
module.exports = awsService;
const awsService = require('./awsService');
const utils = {};
utils.upload = async () => {
try {
const result = await awsService.upload();
return result;
} catch (err) {
console.log(err);
throw err;
}
};
module.exports = utils;
您提供的代码中没有
getSignatureVersion
。您提供的代码中甚至没有getSignatureVersion
服务。甚至没有服务