Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/391.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript AWS S3 ZIP文件上载正在损坏存档文件_Javascript_Node.js_Amazon Web Services_Amazon S3 - Fatal编程技术网

Javascript AWS S3 ZIP文件上载正在损坏存档文件

Javascript AWS S3 ZIP文件上载正在损坏存档文件,javascript,node.js,amazon-web-services,amazon-s3,Javascript,Node.js,Amazon Web Services,Amazon S3,我正在使用下面的代码片段通过文件上载控件上载图像,使用jszip api将其压缩,然后将其存储在AWS S3中。文件上载成功,我可以在AWS控制台中看到demo.zip。但是demo.zip中的文件已损坏,因此无法解压缩 我尽了最大的努力进行调试,但是我没有得到任何关于原因的线索 如果您能帮我修改代码,我将不胜感激 var multer = require('multer'); var uploadservice = multer({ storage: multer.memoryStorage(

我正在使用下面的代码片段通过文件上载控件上载图像,使用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"); 
                   } 
               });
           }) 
        }
    });     
var multer=require('multer');
var uploadservice=multer({storage:multer.memoryStorage(),limits:{fileSize:1000*1000*12}});
app.post('endpointurl',函数(req,res,next){
上传服务(请求、恢复、功能(错误){
如果(错误){
日志(“错误-”+err)
res.status(200).end(“文件上传失败”);
}否则{
var files=req.files
var JSZip=require(“JSZip”);
var zip=newjszip();
对于(i=0;i
对不起,我无法发表评论,因此:


如果创建zip文件,然后在将其移动到S3之前打开它,会发生什么情况?可能是由于使用了
zip.generateAsync({type:“binarystring”
,…..)导致了损坏。

是的。我将类型更改为“nodebuffer”,然后它开始工作!我的问题不完全相同,但关闭了缓冲区(zip.close())在使用它之前,虽然s3fs解决了这个问题:)