2015-12-10 2 views
0

Можно ли дополнительно отправить файл и объект json, содержащие данные с помощью multer? Я нашел this нить. Но это только объясняет, как прикрепить одно поле в то время.Файл загрузки Multer + объект JSON

Вот то, что я есть в данный момент на стороне клиента:

request 
    .post(uploadPOSTUrl) 
    .set('Accept', 'application/json') 
    .field('Test', object.TestField) 
    .attach('file', file) 
    .end((err, res) => { 
    if (err) { 

    } else { 

    } 
    }); 

и на стороне сервера

export function upload(req, res){ 
    console.log("UploadedJSON: ", req.body); 
    console.log("UploadedFile: ",req.file); 
    res.status(204).end(); 
} 

, но вместо того, чтобы просто передать 1 поле. Мне нужно отправить весь объект .field('Test', object). Когда я это делаю, я получаю [Object object] со стороны сервера и не могу получить доступ к полям.

Мое единственное решение прямо сейчас было бы петлю и добавить .field() для каждого поля в моем объекте ...

ответ

1

Ваш клиентский код выглядит он использует библиотеку SuperAgent, я прав? Если это так, реальный вопрос заключается в том, как отправлять multipart-запросы с помощью SuperAgent, поскольку multer обрабатывает только multipart/form-data.

SuperAgent documentation for multipart requests показывает, как вы это сделать, нужно повторить .field() метод:

request 
    .post('/upload') 
    .field('user[name]', 'Tobi') 
    .field('user[email]', '[email protected]') 
    .attach('image', 'path/to/tobi.png') 
    .end(callback); 
+0

Так что нет другого пути, кроме повторения .поля()? И да, я использую SuperAgent, но поскольку я загружал файл, я думал, что за это отвечает multer. –

+0

Документы также показывают метод '.send()', который принимает объект, но я ничего не видел об использовании метода '.send()' с multipart/form-data. Вы можете экспериментировать с '.send()' и, возможно, использовать '.set ('Content-Type', 'multipart/form-data')', но я не знаю, будет ли он работать таким образом. Попробуйте. – Nocturno

+0

ok, мне нужно будет повторить поле .field(). Но так как вы здесь, я пытаюсь загрузить этот загруженный файл и сохранить его. Пользователь должен увидеть его в браузере в разделе загрузки. Я не могу найти никакого примера для этого. Я думаю, что я искал неправильные условия. У вас есть идеи? –

Смежные вопросы