2017-07-16 5 views
1

私は間違いなしです。フォルダuploadschmod 777です。express.jsとmulter with ajaxを使った単純なマルチパートファイルアップロード

バックエンド:

var multer = require('multer'); 
var storage = multer.diskStorage({ 
    destination: function (req, file, cb) { 
     cb(null, './uploads') 
    }, 
    filename: function (req, file, cb) { 
     cb(null, file.fieldname + '-' + Date.now()) 
    } 
}); 

var upload = multer({ storage: storage, 
         limits: { fileSize: '50mb' }}).single('photo'); 


router.post('/bild',function(req,res){ 
    console.log("REQ",req); //file is there in the body 
    upload(req,res,function(err) { 
     if(err) { 
      return res.end("Error uploading file."); 
     } 
     res.end("File is uploaded"); 
    }); 
}); 

フロントエンド:

$("#formular").submit(function (e) { 
     e.preventDefault(); 
     var form = $(this)[0]; 
     var formData = new FormData(form); 
     console.log(formData) 
     $.ajax({ 
      type: "POST", 
      url: "https://stackoverflow.com/users/bild", 
      data: formData, 
      processData: false, 
      "content-type": "application/x-www-form-urlencoded", 
      success: function(r){ 
       console.log("result",r) 
      }, 
      error: function (e) { 
       console.log("some error", e); 
      } 
     }); 

    }); 

しかし、誰のファイルがアップロードされませんでした。私はまた、ファイルを取得し、同じ効果を送信する前にformDataに追加しようとしました。 contentTypeはjQuery.ajaxでFORMDATAオブジェクトを使用する場合はfalseに設定する必要があり、フロントエンドのために

答えて

0

、また$(this)[0] === this

$("#formular").submit(function (e) { 
    e.preventDefault(); 
    var formData = new FormData(this); 
    console.log(formData) 
    $.ajax({ 
     type: "POST", 
     url: "https://stackoverflow.com/users/bild", 
     data: formData, 
     processData: false, 
     contentType: false, 
     success: function(r){ 
      console.log("result",r) 
     }, 
     error: function (e) { 
      console.log("some error", e); 
     } 
    }); 

}); 
関連する問題