React Native 上传一个URI或者它应该被转换吗?

s5a0g9ez  于 2022-12-27  发布在  React
关注(0)|答案(1)|浏览(129)

我正在从我的react原生应用程序发送图像数据到我的node js后端,我想上传到S3。我想确切地知道我必须将数据更改为哪种格式,以便将其上传到我的S3。下面是我目前在后端记录的formdata。

[
  'file',
  {
    uri: 'file:///var/mobile/Containers/Data/Application/CA974BC6-6943-4135-89DE-235BC593A54F/Library/Caches/ExponentExperienceData/%2540lb2020%252Fmy/ImagePicker/D7119C77-60D0-46CC-A194-4F1FDE0D9A3D.jpg',
    type: 'image/jpeg',
    name: 'hi.jpg'
  }
]

我的后端也有下面的代码。将使上述代码等同于文件工作?如果没有,建议将不胜感激。

const params = {
    Bucket:"myarrowbucket", // bucket you want to upload to
    Key: "filename"+".png",
    Body: file,
    ContentType:'image/png',
    ACL: "public-read",
  };

我已尝试上传,但图像在S3上无法正确打开或出现错误:不支持的正文有效负载对象

已更新代码- -找不到路径错误

app.post("/upload", async (req, res) => {
const uri = (req.body._parts[0][1].uri)
const file = uri.substring(7);
  const fileStream = fs.createReadStream(file);  
  const params = {
      Bucket:"myarrowbucket", // bucket you want to upload to
      Key: "filename"+".png",
      Body: fileStream,
      ContentType:'image/png',
      ACL: "public-read",
    };
  const data = await client.upload(params).promise();
    return data.Location; // returns the url location
});
cpjpxq1n

cpjpxq1n1#

我已经尝试上传和图像无法打开正确的S3或给我〉错误:不支持的正文有效负载对象
您需要向S3客户端提供一个流。

app.post("/upload", fileUpload(), async (req, res) => {
  const uri = (req.body._parts[0][1].uri)
  const file = uri.substring(7);
  const params = {
      Bucket:"myarrowbucket", // bucket you want to upload to
      Key: "filename"+".png",
      Body: Buffer.from(req.files[0].data, 'binary'), <-- PROVIDE DATA FROM FORM-DATA
      ACL: "public-read",
    };
  const data = await client.upload(params).promise();
  return data.Location; // returns the url location
});

您可以使用form-data之类的库来处理表单数据转换。

相关问题