AWS mp3 文件上传间歇性失败
AWS mp3 file upload is failing intermittently
我遇到了使用 express-fileupload
将 mp3 文件上传到 S3 存储桶的问题。对于大多数用户,它工作正常,但对于某些用户,md5
在上传时不匹配,因此上传失败。我正在使用以下代码上传文件。
export const uploadFileToS3Bucket = async (fileToUpload, fileId, subKey) => {
const fileExtension = fileToUpload.name.split(".");
const s3Bucket = new AWS.S3({
accessKeyId: AppConstants.S3_UPLOAD_ACCESS_ID,
secretAccessKey: AppConstants.S3_UPLOAD_ACCESS_KEY,
region: AppConstants.S3_REGION,
});
const key = `${subKey}/${fileId}.${fileExtension[fileExtension.length - 1]}`;
const params = {
Bucket: BucketName,
Key: key,
Body: fileToUpload.data,
ContentType: fileToUpload.mimetype,
ACL: "public-read",
ContentMD5: fileToUpload.md5,
};
return new Promise((resolve, reject) => {
s3Bucket.upload(params, (err, data) => {
if (err) {
reject(err);
} else {
resolve(data.Location);
}
});
});
};
我们发现了一个问题,即我们没有在部署的 PM2 实例之间保持用户粘性。因此,如果我们从实例 1 发送请求,则响应有机会被实例 2 接收,导致上传出现问题。我们启用了用户粘性,这解决了问题。
我遇到了使用 express-fileupload
将 mp3 文件上传到 S3 存储桶的问题。对于大多数用户,它工作正常,但对于某些用户,md5
在上传时不匹配,因此上传失败。我正在使用以下代码上传文件。
export const uploadFileToS3Bucket = async (fileToUpload, fileId, subKey) => {
const fileExtension = fileToUpload.name.split(".");
const s3Bucket = new AWS.S3({
accessKeyId: AppConstants.S3_UPLOAD_ACCESS_ID,
secretAccessKey: AppConstants.S3_UPLOAD_ACCESS_KEY,
region: AppConstants.S3_REGION,
});
const key = `${subKey}/${fileId}.${fileExtension[fileExtension.length - 1]}`;
const params = {
Bucket: BucketName,
Key: key,
Body: fileToUpload.data,
ContentType: fileToUpload.mimetype,
ACL: "public-read",
ContentMD5: fileToUpload.md5,
};
return new Promise((resolve, reject) => {
s3Bucket.upload(params, (err, data) => {
if (err) {
reject(err);
} else {
resolve(data.Location);
}
});
});
};
我们发现了一个问题,即我们没有在部署的 PM2 实例之间保持用户粘性。因此,如果我们从实例 1 发送请求,则响应有机会被实例 2 接收,导致上传出现问题。我们启用了用户粘性,这解决了问题。