Не удается загрузить файл xlsx или csv в azure хранилище BLOB-объектов - PullRequest
0 голосов
/ 01 апреля 2020

Хотите загрузить файл XLSX или CSV в azure. Итак, я создал API

http://localhost:3000/upload

Почтовый запрос с использованием сообщения man

Этот код


app.post('/upload',(req,res)=>{
    var form = new formidable.IncomingForm();
    form.parse(req, async(err,fields,files)=> {
        const blobServiceClient = await BlobServiceClient.fromConnectionString(AZURE_STORAGE_CONNECTION_STRING);
        const containerClient = await blobServiceClient.getContainerClient('mycon');
        if(!containerClient.exists()){
            const createContainerResponse = await containerClient.create();
        }
        const blobName = files.file.name; 
        const blockBlobClient = containerClient.getBlockBlobClient(blobName);
        const uploadBlobResponse = await blockBlobClient.upload(files,files.file.size);
        console.log(files);
        res.send({message:files.file.size + "uploaded"})

    })

})

Когда я сделал console.log (файлы) в приведенном выше фрагменте кода

{
  file: File {
    _events: [Object: null prototype] {},
    _eventsCount: 0,
    _maxListeners: undefined,
    size: 18,
    path: 'C:\\Users\\bakhil\\AppData\\Local\\Temp\\upload_8531745c7d9ae14f105d50c775256e00',
    name: 'Book1.csv',
    type: 'application/vnd.ms-excel',
    hash: null,
    lastModifiedDate: 2020-04-01T10:03:55.885Z,
    _writeStream: WriteStream {
      _writableState: [WritableState],
      writable: false,
      _events: [Object: null prototype] {},
      _eventsCount: 0,
      _maxListeners: undefined,
      path: 'C:\\Users\\bakhil\\AppData\\Local\\Temp\\upload_8531745c7d9ae14f105d50c775256e00',        
      fd: null,
      flags: 'w',
      mode: 438,
      start: undefined,
      autoClose: true,
      pos: undefined,
      bytesWritten: 18,
      closed: false
    }
  }
}

Когда я запускаю конечную точку из Почтальона, возникает следующая проблема:

 UnhandledPromiseRejectionWarning: Error: body must be a string, Blob, ArrayBuffer, ArrayBufferView, or a function returning NodeJS.ReadableStream.

Я понятия не имею, Ошибка. Пожалуйста, помогите мне решить ее.

Заранее спасибо.

1 Ответ

0 голосов
/ 01 апреля 2020

Попробуйте, изменив следующую строку кода:

const uploadBlobResponse = await blockBlobClient.upload(files,files.file.size);

на

const uploadBlobResponse = await blockBlobClient.uploadFile(files.file.path);
...