【问题标题】:Error while uploading image on AWS S3 - with Axios & React-Native在 AWS S3 上上传图像时出错 - 使用 Axios 和 React-Native
【发布时间】:2021-08-12 06:33:58
【问题描述】:

我正在尝试使用预签名 URL 从我的移动应用程序(使用 React-Native)在 ​​AWS S3 上上传图像。我正在使用 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-services react-native amazon-s3 mobile axios


    【解决方案1】:

    这不是它的工作原理。

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

    内容类型multipart/form-data 还包含一个名为boundary 的字段,由分隔符分隔。您可以获取更多详细信息here。文章有详细的边界格式。

    另一个example 也一样。

    希望对你有帮助!

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

    【讨论】:

    • 尝试添加边界但仍然没有。我尝试使用文本编辑器打开损坏的图像,我注意到一开始有边界(不是我添加的那个!)以及内容处置和内容类型。我删除了它,图像不再损坏。但这是为什么呢?无需手动编辑文件如何解决?
    猜你喜欢
    • 2020-03-13
    • 1970-01-01
    • 2020-09-16
    • 2016-08-10
    • 2021-01-29
    • 2018-11-28
    • 2020-03-26
    • 2021-11-09
    • 2019-05-01
    相关资源
    最近更新 更多