Загрузка изображений Multer не работает - req.file.path undefined

Итак, я написал базовую загрузку multer с помощью express, и она работает, если данные являются только вводом файла, если я попытаюсь прикрепить дополнительный фрагмент текстовых данных с помощью formdata.append (), он не работает, на сервере он дает req.file.path undefined на стороне сервера

Вот мои настройки Multer

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

Экспресс.post ()

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

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>

Звонок JS

 $(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>");
                }
            }
        });
    });

Я не могу сказать, что делает это неопределенным


person Cayle    schedule 19.08.2016    source источник


Ответы (1)


Имя атрибута в вызове .single () должно совпадать с именем входного файла. Итак, в вашем случае в вашей разметке:

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

поэтому промежуточное ПО вашего маршрутизатора должно читать:

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