Strapi:如何上传图像并将其链接到模型?

时间:2019-01-18 20:10:15

标签: javascript react-native strapi

说我有一个模型Restaurant,我想上传图像并将其链接到模型。 从documentation开始,这应该分两个步骤进行:

  1. 创建新实体
  2. 上传并链接图片

当前,在创建实体并尝试执行步骤2后,它失败了。 注意:图像是从React-Native image picker

获得的

这是我在做什么:

      const data = new FormData();
      data.append('files', image.uri);
      data.append('refId', id);
      data.append('ref', 'Restaurants');
      data.append('field', 'Logo');

我看到的是图像没有上传。此外,从Strapi端进行调试,我将所有这些数据的请求视为fields

我正在使用文档中提到的FormData,我缺少什么?

2 个答案:

答案 0 :(得分:1)

原来,我需要向files键添加一些额外的信息,以便FormData将其重新识别为文件,并且Strapi可以处理文件上传。 这是有效的方法:

      const data = new FormData();
      data.append('files', {
        uri: logo.uri,
        name: `test.jpg`,
        type: 'multipart/form-data'
      });
      data.append('refId', id);
      data.append('ref', 'Restaurants');
      data.append('field', 'Logo');

真正重要的是type: 'multipart/form-data

再说一遍,在documentation中,还有另一个称为source的键。我没有使用它,似乎没有任何影响。请注意是否需要。

答案 1 :(得分:0)

尝试做类似的事情。但是,即使没有将文件链接到模型,上传也会失败。奇怪的是,响应为“ SUCCESS”,但没有任何内容上传到Strapi上传文件夹。我想念什么?我的代码(这里我只是尝试从Internet上保存一个随机文件)如下:

    const bodyFormData = new FormData();
    const token = localStorage.getItem('token');
    bodyFormData.append('files', {
        uri: "https://www.w3schools.com/bootstrap/newyork.jpg",
        name: "test.jpg",
        type: "multipart/form-data"
      });
    // console.log(data.Attachment.rawFile.preview);
    axios.post( 'http://localhost:1337/upload',
    bodyFormData,
    {
      headers: {
          Authorization: `Bearer ${token}`,
          'Content-Type': 'multipart/form-data'
      }
    }
  ).then(function(response){
    console.log('SUCCESS');
  })
  .catch(function(){
    console.log('Fail!');
  });