javascript - React原生上传文件

标签 javascript reactjs react-native

是否可以使用 FormData 通过 react-native 将文件(图像)上传到服务器? 尝试像这样使用它:

const data = new FormData();
data.append('file', {uri: 'file://' + fileObject.uri, name: 'image.jpg', type: 'image/jpg;'});
const request = {
    method: method,
    mode: 'cors',
    credentials: 'include',
    headers: {
      'Accept': 'application/json',
      'Content-Type': 'multipart/form-data; boundary=6ff46e0b6b5148d984f148b6542e5a5d',
    },
    body: data
  }
return fetch(`${API}/${url}`, request).then((response) => {
  return Promise.all([Promise.resolve(response), response.json()]);
})

对于 web FormData 按预期工作但对于 react-native 没有。

尝试使用 react-native-fetch-blob 但这里无法使用 credentials (对我很重要)所以服务器发送 unauthorized

希望得到您的帮助!

使用react-native-image-picker进行图片选择

最佳答案

我遇到了同样的问题,而 FormData 对我有用。我还使用了 react-native-image-picker。

export const updateProfileData = (authToken, values) => {
  const data = new FormData();

  Object.keys(values).forEach(paramKey => {
    if (paramKey === 'birthday') {
      data.append(`profile[${paramKey}]`, moment(values[paramKey]).format('YYYY-M-D'));
    } else if (paramKey === 'avatar') {
      const photo = {
        uri: values[paramKey].uri,
        type: values[paramKey].type,
        name: values[paramKey].fileName,
      };
      data.append(`profile[${paramKey}]`, photo);
    } else {
      data.append(`profile[${paramKey}]`, values[paramKey]);
    }
  });

  return axios({
    method: 'PATCH',
    url: `${BASE_URL}/api/v1/current_profile`,
    headers: {
      'Auth-Token': authToken
    },
    data
  })
  .then((res) => {
    return res.data;
  });
};

使用图像选择器中的数据构建的照片。 示例中还有一个 axios,但也应该与 fetchAPI 一起使用。

关于javascript - React原生上传文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44068190/

相关文章:

react-native - React Native 是否默认使用 Babel 还是只是一种选择?

javascript - 仅 CSS 将鼠标悬停在缩略图上以显示 div

javascript - ES 6 React 类访问 getter 中的 props

reactjs - 老服务员不肯放手

javascript - 将语句转换为 ES5

javascript - 开 Jest 时出错 : The module factory of `jest.mock()` is not allowed to reference any out-of-scope variables

android - 使用 applicationIdSuffix 时 React Native 应用程序不会启动

javascript - 使用jquery正确制作.next()元素slideToggle?

JavaScript 任务调度器(批处理)

javascript - JavaScript 中奇怪的算术行为