首页 > 解决方案 > 在 AWS S3 上上传图像时出错 - 使用 Axios 和 React-Native

问题描述

我正在尝试使用预签名 URL 从 AWS S3 上的移动应用程序(使用 React-Native)上传图像。我正在使用 axios 发送请求。问题是,即使我的图像上传到 AWS,如果我下载它并尝试打开它,它也会说它已损坏。我尝试用 Photoshop 打开它,它可以工作:/

创建表单数据:

const createFormData = (photo) => {
    const data = new FormData();
    data.append('image', {
        name: photo.fileName, // a name
        type: photo.type, // image/jpg
        uri: photo.uri, // the uri starting with file://....
    });

    return data;
};

我的 PUT 请求:

const formData = createFormData(responseImage)
axios({
method: "put",
   url: awsURL.data.url_thumbnail,
   data: formData,
   headers: { "Content-Type": "multipart/form-data" },
})

标签: amazon-web-servicesreact-nativeamazon-s3mobileaxios

解决方案


这不是它的工作方式。

headers: { "Content-Type": "multipart/form-data" }

内容类型multipart/form-data还包含一个称为边界的字段,由分隔符分隔。您可以在此处获得更多详细信息。文章详细介绍了边界的格式。

另一个相同的例子

希望能帮助到你!

PS:有一些关于解析多部分/表单数据的数据的文章我现在找不到,其中解释了如何在上传之前解析数据,以免数据损坏。


推荐阅读