как отправить запрос base64 закодированный Audio blob в Node Express JS [дубликат]

Java передает параметры по VALUE и по значению ONLY.

Чтобы сократить длинный короткий текст:

Для тех, кто приходит из C #: нет параметра «out» .

Для тех, кто приходит из PASCAL: нет параметра «var».

Это означает, что вы не можете изменить ссылку с самого объекта, но можете всегда изменяйте свойства объекта.

Обходным путем является использование параметра StringBuilder вместо String. И вы всегда можете использовать массивы!

192
задан Community 23 May 2017 в 12:26
поделиться

8 ответов

Модуль body-parser обрабатывает только сообщения JSON и urlencoded, а не multipart (это было бы так, если вы загружаете файлы).

Для multipart вы 'd нужно использовать что-то вроде connect-busboy или multer или connect-multiparty (многопартийное / грозное - это то, что первоначально использовалось в экспресс-курьерское промежуточное ПО). Кроме того, FWIW, я работаю над еще более высоким уровнем над буксиром под названием reformed . Он поставляется с промежуточным программным обеспечением Express, а также может использоваться отдельно.

184
ответ дан mscdex 17 August 2018 в 08:44
поделиться
  • 1
    Спасибо, это сработало. Хотя мне пришлось использовать connect-busboy вместо просто busboy. Обновлено мое исходное сообщение с помощью решения. – safwanc 16 April 2014 в 22:03
  • 2
    спасибо, что я искал – anztrax 18 May 2015 в 17:48
  • 3
    Спасибо друг! Я нахожу вариант connect-multiparty лучше всего! – neciu 25 June 2015 в 06:54
  • 4
    Спасибо, лучший ответ – Sudhanshu Gaur 5 September 2015 в 19:45
  • 5
    reformed все еще находится в стадии разработки? Ваша последняя фиксация на github - с 2014 года ... Кстати, на ваш взгляд, какой лучший модуль для обработки данных мультипартийной формы? Под "лучшим" Я имею в виду лучшую поддержку, и тот, который работает лучше (меньше ошибок), с большим количеством функций и с более длинным будущим. Я выбрал multer, потому что он казался наилучшим образом поддержанным, но я все же думаю, что он должен быть более поддержан. – nbro 7 December 2015 в 02:57

Вот что я нашел googling вокруг:

var fileupload = require("express-fileupload");

Который довольно простой механизм для загрузки

app.post("/upload", function(req, res)
{
    var file;

    if(!req.files)
    {
        res.send("File was not found");
        return;
    }

    file = req.files.FormFieldName;  // here is the field name of the form

    file.mv("file.txt", function(err)  //Obvious Move function
        {
              // log your error
        });

    res.send("File Uploaded");


});
11
ответ дан Anton Stafeyev 17 August 2018 в 08:44
поделиться

Похоже, body-parser поддерживал загрузку файлов в Express 3, но поддержка была сброшена для Express 4, когда больше не включалась в Connect как зависимость

]

После просмотра некоторых модулей в ответе mscdex я обнаружил, что express-busboy был намного лучшей альтернативой и ближайшей заменой. Единственные различия, которые я заметил, были в свойствах загруженного файла.

console.log(req.files) с использованием body-parser (Express 3) выводит объект, который выглядит следующим образом:

{ file: 
   { fieldName: 'file',
     originalFilename: '360px-Cute_Monkey_cropped.jpg',
     name: '360px-Cute_Monkey_cropped.jpg'
     path: 'uploads/6323-16v7rc.jpg',
     type: 'image/jpeg',
     headers: 
      { 'content-disposition': 'form-data; name="file"; filename="360px-Cute_Monkey_cropped.jpg"',
        'content-type': 'image/jpeg' },
     ws: 
      WriteStream { /* ... */ },
     size: 48614 } }

по сравнению с console.log(req.files) с использованием экспресс-шины (Экспресс 4):

{ file: 
   { field: 'file',
     filename: '360px-Cute_Monkey_cropped.jpg',
     file: 'uploads/9749a8b6-f9cc-40a9-86f1-337a46e16e44/file/360px-Cute_Monkey_cropped.jpg',
     mimetype: 'image/jpeg',
     encoding: '7bit',
     truncated: false
     uuid: '9749a8b6-f9cc-40a9-86f1-337a46e16e44' } }
10
ответ дан HPierce 17 August 2018 в 08:44
поделиться

multer является промежуточным программным обеспечением, которое обрабатывает «multipart / form-data» и magically & amp; делает загруженные файлы и данные формы доступными нам в запросе как request.files и request.body.

установка multer: - npm install multer --save

в .html файл: -

<form method="post" enctype="multipart/form-data" action="/upload">
    <input type="hidden" name="msgtype" value="2"/>
    <input type="file" name="avatar" />
    <input type="submit" value="Upload" />
</form>

в файле .js: -

var express = require('express');
var multer = require('multer');
var app = express();
var server = require('http').createServer(app);
var port = process.env.PORT || 3000;
var upload = multer({ dest: 'uploads/' });

app.use(function (req, res, next) {
  console.log(req.files); // JSON Object
  next();
});

server.listen(port, function () {
  console.log('Server successfully running at:-', port);
});

app.get('/', function(req, res) {
  res.sendFile(__dirname + '/public/file-upload.html');
})

app.post('/upload', upload.single('avatar'),  function(req, res) {
  console.log(req.files); // JSON Object
});

Надеюсь, что это поможет!

4
ответ дан Joe 17 August 2018 в 08:44
поделиться

express-fileupload выглядит как единственное промежуточное программное обеспечение, которое все еще работает в наши дни.

В том же примере multer и connect-multiparty дают неопределенное значение req.file или req.files , но express-fileupload работает.

И возникает много вопросов и проблем, связанных с пустым значением req.file / req. файлы .

-2
ответ дан pringi 17 August 2018 в 08:44
поделиться

ПРОБЛЕМА РЕШЕНА !!!!!!!

Выключает функцию storage, которая НЕ запускается даже один раз. потому что я должен был включить app.use(upload) в качестве upload = multer({storage}).single('file');

 let storage = multer.diskStorage({
        destination: function (req, file, cb) {
            cb(null, './storage')
          },
          filename: function (req, file, cb) {
            console.log(file) // this didn't print anything out so i assumed it was never excuted
            cb(null, file.fieldname + '-' + Date.now())
          }
    });

    const upload = multer({storage}).single('file');
0
ответ дан Sharl Sherif 17 August 2018 в 08:44
поделиться
0
ответ дан Dmitry Kulahin 29 October 2018 в 13:15
поделиться
0
ответ дан Mohammad 29 October 2018 в 13:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: