使用XMLHttpRequest和React-Native

时间:2018-02-19 04:29:33

标签: android react-native

我正在尝试使用以下提供的示例将图像上传到服务器:

https://gist.github.com/Tamal/9231005f0c62e1a3f23f60dc2f46ae35

我查了一些教程,代码应该可行。但是Android中的uri显示了uri

uri: content://media/external/images/media/4985

URI来自组件

https://github.com/jeanpan/react-native-camera-roll-picker

URI应为

file://....

那么,为什么上传代码无效。

如何转换

content://...file://....是否可以将图像上传到React-native中的服务器?或者我的假设是否正确?

1 个答案:

答案 0 :(得分:1)

我正在使用 react-native-image-picker 从库中获取图片。我在一个方法名称中编写了以下代码作为 selectPhoto()来从库中选择图像。

selectedPhoto = () => {
//Open Image Picker

const options = {
  quality: 1.0,
  maxWidth: 500,
  maxHeight: 500,
};

ImagePicker.showImagePicker(options, (response) => {
  //console.log('Response = ', response);

  if (response.didCancel) {
    console.log('User cancelled photo picker');
  }
  else if (response.error) {
    console.log('ImagePicker Error: ', response.error);
  }
  else if (response.customButton) {
    console.log('User tapped custom button: ', response.customButton);
  }
  else {
    let source = {uri :response.uri};
    console.log(source.uri);
    this.setState({
      profilePhoto: source
    });
  }
}); }

这将给我uri选择的图像,我已设置状态变量。然后编写以下代码上传图片。

var profiePicture = {
    uri: this.state.profilePhoto.uri,
    type: 'image/jpg', // or photo.type image/jpg
    name: 'testPhotoName',
  }

  // API to upload image
  fetch('http://www.example.com/api/uploadProfilePic/12345', {
    method: 'post',
    headers:{
      'Accept': 'application/json',
      'content-type': 'multipart/form-data',
    },
    body: JSON.stringify({
      'profile_pic' : profiePicture
    })
  }).then((response) => response.json())
  .then((responseJson) => {
    console.log(responseJson);
  })
  .catch((error) => {
    console.error(error);
  });

此代码正在我的一个项目中工作。