2016-08-19 3 views
0

J'ai donc écrit un téléchargement de multer de base avec express et il fonctionne si les données ne sont une entrée de fichier, si je tente de joindre une pièce supplémentaire de données de texte à l'aide formdata. append() il ne fonctionne pas, sur le serveur lui donne un req.file.path non défini sur le côté serveurMulter image Ajouter ne fonctionne pas - req.file.path non définie

Voici mon Multer Paramètres

var upload = multer({ dest: 'uploads/' }) 

le express.post()

app.post("/rest/OCR", upload.single('image'), function(req, res, next){ 
    console.log("Receiving File") 
    console.log(req.file.path); 
} 

Le Formulaire HTML

<form action='/rest/ocr' id='imageUploadForm' method='post' enctype='multipart/form-data'> 
    <input class='vwide upload-button' type='file' name='file'> 

    <input type='submit'> 
</form> 

Le JS Appel

$(document.body).on('submit', '#imageUploadForm', function(e){ 
     e.preventDefault(); 
     var self = this; 
     var data = new FormData(); 
     data.append('id', cardlob.profile.auth.id); 
     data.append('file', $(this)[0]); 
     $.ajax({ 
      processData: false, 
      cache: false, 
      async: false, 
      data: data, 
      url: "/rest/OCR", 
      type: 'POST', 
      success: function(data, textStatus, jqXHR){ 
       var cardDto = JSON.parse(data); 
       if(cardDto.vCardFormattedString !== "null"){ 
        window.open("/cards/"+cardDto.hash+".vcf"); 
       }else{ 
        $("#textData").append("<h4> No Business Cards Found in image </h4>"); 
       } 
      } 
     }); 
    }); 

Je ne peux pas dire ce qui se passe pour faire de cette non définie

Répondre

1

Le nom de l'attribut dans l'appel .single() doit être même nom que l'entrée du fichier. Donc, dans votre cas, vous avez dans votre balisage:

<input class='vwide upload-button' type='file' name='file'> 

de sorte que votre middleware routeur devrait lire:

app.post("/rest/OCR", upload.single('file'), function(req, res, next){ 
    console.log("Receiving File") 
    console.log(req.file.path); 
}