Javascript-форум (https://javascript.ru/forum/)
-   Node.JS (https://javascript.ru/forum/node-js-io-js/)
-   -   Docker и multipart form data (https://javascript.ru/forum/node-js-io-js/80196-docker-i-multipart-form-data.html)

Maxman 07.05.2020 13:25

Docker и multipart form data
 
Всем привет! Столкнулся с такой проблемой:

На клиенте примерно следующее: (отправляются данные из формы)

let formData = new FormData();
    formData.append('xmlFile', $("#xml").files[0]);
    formData.append('csvFile', $("#csv").files[0]);
    formData.append('xml', "sipp_reg_UAC_v02.xml");
    formData.append('csv', "auth_users.csv");
    formData.append("cpu", $("#cpu").value);
    formData.append("server", $("#server").value);
    formData.append("port", $("#port").value);

    axios.post(server + "/sipp/start", /*{
      
      xml: 'sipp_reg_UAC_v02.xml',
      csv: "auth_users.csv",
      cpu: $("#cpu").value,
      server: $("#server").value,
      port: $("#port").value,
  
    },*/ formData, {
      headers: {
        'Content-Type': 'multipart/form-data'
      }
     }).then(response => {
...
    });


На сервере юзаю multipart middleware для доступа к req.files (Express)

var multipart = require('connect-multiparty');
var multipartMiddleware = multipart();
...
router.post('/sipp/start', multipartMiddleware, Process.start());


Когда запускаю без докера - всё идеально, когда в нём - req.files и req.body почему-то пустые, пустой массив, при этом миддлвара сама работает, потому что массив доступен, иначе он был бы undefined, в браузере если посмотреть - тоже отправляются файлы, только не доходит... Кто-нить в курсе почему такое может быть?

Vlasenko Fedor 07.05.2020 14:06

используйте https://github.com/expressjs/multer
он позволяет валидировать файлы загрузки
складывать в нужные папки

destus 07.05.2020 19:14

Maxman,
Предполагаю, что проблема в разных версиях node.js. В докер контейнере поднимается 14, в которой есть проблема с обработкой файлов для используемого middleware https://github.com/pillarjs/multiparty/issues/226


Часовой пояс GMT +3, время: 10:51.