我使用下面的代码片段通过文件上传控件上传图片,使用jszip api将其压缩,然后将其存储在AWS S3中。文件上传成功,我可以在AWS控制台中看到demo.zip。但是在demo中的文件.zip正在被破坏,因此无法解压缩。
我尝试了最好的水平调试,但我没有得到任何关于其原因的线索。
任何纠正我的代码的帮助都会非常感激。
var multer = require('multer');
var uploadservice = multer({ storage: multer.memoryStorage(), limits: { fileSize: 1000 * 1000 * 12 } }).array("files", 5);
app.post('endpointurl', function (req, res, next) {
uploadservice(req, res, function (err) {
if (err) {
console.log("error - " + err)
res.status(200).end("File upload is failure");
} else {
var files = req.files
var JSZip = require("jszip");
var zip = new JSZip();
for (i = 0; i < files.length; i++){
zip.file('file' + i, files[i].buffer, { binary: true });
}
zip.generateAsync({
type: "binarystring",
compression: "DEFLATE",
mimeType:"application/zip"
}).then(function (content) {
var s3 = new aws.S3();
var S3_BUCKET = 'mybucket'
s3.putObject({
ACL: 'private',
Bucket: S3_BUCKET,
Key: "demo.zip",
// serverSideEncryption: 'AES256',
Body: content,
ContentType: "application/zip"
}, function (error, response) {
if (error) {
console.log("error - " + error)
res.status(200).end("File upload failed");
} else {
console.log("success")
res.status(200).end("File is uploaded successfully");
}
});
})
}
});
答案 0 :(得分:1)
如果您创建zip文件,然后在将其移至S3之前将其打开,会发生什么?也许是使用zip.generateAsync({type: "binarystring"
,......导致腐败。