Nodejs Загрузить файл в Strapi, используя FormData - PullRequest
1 голос
/ 26 февраля 2020

привет, у меня проблемы с загрузкой файла в strapi из бэкэнда. nodejs я делаю

bodyFormData.append('files.image', fs.createReadStream(req.file.path), req.file.filename);
bodyFormData.append('data', JSON.stringify(data));

и использую топор ios для создания запроса на публикацию

axios({
        url:`${strapi}/campaigns`,
        method:'post',
        data:bodyFormData,
        withCredentials:true,
      })
      .then(response=>{
        console.log(response.data)
        // return res.status(200).send(response.data)
      })
      .catch(err=>{
        res.status(400).send(err)
      })

вот мой console.log (bodyFormData)

FormData {
[0]   _overheadLength: 288,
[0]   _valueLength: 272,
[0]   _valuesToMeasure: [],
[0]   writable: false,
[0]   readable: true,
[0]   dataSize: 0,
[0]   maxDataSize: 2097152,
[0]   pauseStreams: true,
[0]   _released: false,
[0]   _streams: [
[0]     '----------------------------167862620653181372969530\r\n' +
[0]       'Content-Disposition: form-data; name="files.image"; filename="1582728780533-fancy-bottom-border.png"\r\n' +
[0]       'Content-Type: image/png\r\n' +
[0]       '\r\n',
[0]     'public\\1582728780533-fancy-bottom-border.png',
[0]     [Function: bound ],
[0]     '----------------------------167862620653181372969530\r\n' +
[0]       'Content-Disposition: form-data; name="data"\r\n' +
[0]       '\r\n',
[0]     '{"title":"123`${strapi}/campaigns`","description":"`${strapi}/campaigns`","author":{"id":62},"reference":30939226,"goal":"123","verified":false,"deleted":false,"requested":false,"raised":0,"username":"cjoyales","currency":"USD"}',
[0]     [Function: bound ]
[0]   ],
[0]   _currentStream: null,
[0]   _insideLoop: false,
[0]   _pendingNext: false,
[0]   _boundary: '--------------------------167862620653181372969530'
[0] }

но вот console.log (response.data) из strapi

{
[0]   id: 176,
[0]   title: '',
[0]   description: '',
[0]   goal: 0,
[0]   raised: null,
[0]   username: null,
[0]   created_at: '2020-02-26T14:53:00.000Z',
[0]   updated_at: '2020-02-26T14:53:00.000Z',
[0]   verified: null,
[0]   deleted: null,
[0]   author: null,
[0]   reference: null,
[0]   currency: null,
[0]   requested: null,
[0]   done: null,
[0]   image: [],
[0]   supporters: []
[0] }

почему он пустой или нулевой, даже если в данные формы? может кто-нибудь помочь? Спасибо

1 Ответ

0 голосов
/ 30 марта 2020

Попробуйте заменить

bodyFormData.append('files.image', fs.createReadStream(req.file.path), req.file.filename);

на

bodyFormData.append('files', fs.createReadStream(req.file.path), req.file.filename);

Я несколько часов боролся с чем-то похожим, пока не прочитал комментарий Павла Разумовского здесь :

Теперь это новый API, проверьте новые документы: strapi.io/documentation/3.0.0-beta.x/plugins/… formData.append ('файлы. MODEL_FILE_FIELD_NAME ', blob, filename)

...