最新消息: 电脑我帮您提供丰富的电脑知识,编程学习,软件下载,win7系统下载。

问题使用axios上传图像

IT培训 admin 9浏览 0评论

问题使用axios上传图像

我正在尝试使用带有react-native的axios将图像发送到服务器。

为此,我将图像数据(以64为基数的编码图像数据)直接传递给使用axios的uploadPicture函数:

const uploadPicture = async (data): Promise<AxiosResponse<string>> => {
  const response = publicApi.post(
    `${API_URL}/upload`,
    {
      image: data,
    },
    {
      headers: { 'Content-Type': 'multipart/form-data' },
      transformRequest: [transformToFormData],
    }
  );

  return response;
};

const transformToFormData: AxiosTransformer = data => {
  const formData = new FormData();
  for (const key in data) {
    formData.append(key, data[key]);
  }
  return formData;
};

我面临的问题:

我收到内部错误,例如如果我的图像没有通过我的请求正确传输。

如果我使用Postman进行完全相同的请求,则可以像这样设置主体,效果很好:

这使我认为问题不是来自服务器,而是来自我的axios请求。

关于我可能做错了什么的任何想法?我在某处缺少任何axios选项吗?

回答如下:

我使用javascript的

    fetch函数代替axios
  • 我发送文件对象而不是直接发送数据
  • 我必须禁用本地反应网络检查,否则上传将不起作用
  • 我下面的工作解决方案,image是反应本机图像选择器的响应:const file = { uri: image.uri, name: image.fileName, type: image.type, size: image.fileSize, slice: () => new Blob(), }; const body = new FormData(); body.append('image', file); const response = await fetch(`${API_URL}/upload`, { method: 'POST', body, });
  • 问题使用axios上传图像

    我正在尝试使用带有react-native的axios将图像发送到服务器。

    为此,我将图像数据(以64为基数的编码图像数据)直接传递给使用axios的uploadPicture函数:

    const uploadPicture = async (data): Promise<AxiosResponse<string>> => {
      const response = publicApi.post(
        `${API_URL}/upload`,
        {
          image: data,
        },
        {
          headers: { 'Content-Type': 'multipart/form-data' },
          transformRequest: [transformToFormData],
        }
      );
    
      return response;
    };
    
    const transformToFormData: AxiosTransformer = data => {
      const formData = new FormData();
      for (const key in data) {
        formData.append(key, data[key]);
      }
      return formData;
    };
    

    我面临的问题:

    我收到内部错误,例如如果我的图像没有通过我的请求正确传输。

    如果我使用Postman进行完全相同的请求,则可以像这样设置主体,效果很好:

    这使我认为问题不是来自服务器,而是来自我的axios请求。

    关于我可能做错了什么的任何想法?我在某处缺少任何axios选项吗?

    回答如下:

    我使用javascript的

      fetch函数代替axios
    • 我发送文件对象而不是直接发送数据
    • 我必须禁用本地反应网络检查,否则上传将不起作用
  • 我下面的工作解决方案,image是反应本机图像选择器的响应:const file = { uri: image.uri, name: image.fileName, type: image.type, size: image.fileSize, slice: () => new Blob(), }; const body = new FormData(); body.append('image', file); const response = await fetch(`${API_URL}/upload`, { method: 'POST', body, });
  • 与本文相关的文章

    发布评论

    评论列表 (0)

    1. 暂无评论