React-Native загрузка нескольких фотографий не работает в Android - PullRequest
0 голосов
/ 25 февраля 2019

Я пытаюсь отправить / загрузить файл изображения на свою внутреннюю подачу, используя выборочную загрузку из нескольких частей в реагирующем, но загрузка данных из нескольких составных форм не работает для Android, однако я пробовал другие примеры.

API для передачи изображений в виде многокомпонентных форм основан на php и работает для iOS-приложения, работающего на родном языке.

Я использую библиотеку реагировать на родную фотографию для загрузки изображения.

storePicture(PicturePath:string) {
console.warn(PicturePath);
if (PicturePath) {
  const apiUrl = `${Constants.APIHOST}updateprofileimage.php`;
  // Create the form data object
  var data = new FormData();
  data.append('profileimage', { uri:PicturePath, name: 'profileimage.jpg', type: 'image/jpg/jpeg' });
  data.append('accesstoken', this.state.user.sAccessToken);
  data.append('react-native', 1);

  // Create the config object for the POST // You typically have an OAuth2 token that you use for authentication
  const config = { method: 'POST', headers: { Accept: 'application/json', 'Content-Type': 'multipart/form-data;' }, body: data };
  fetch(apiUrl, config)
  .then(responseData => { // Log the response form the server
    // Here we get what we sent to Postman back
    console.warn(`response:${responseData}`);
  })
  .catch(err => {
    console.warn(err);
  });
}}

Вот пример того, как я вызываю storePicture ()функция.

<PhotoUpload onResizedImageUri={
        avatar => {
          if (avatar) {
            this.storePicture(avatar.path);
          }
        }}
      >
        <Image source={{uri: this.state.user.sProfileImageUrl}} style={{resizeMode:"cover", marginTop:8.0, backgroundColor:'transparent', height:120.0, width:120, borderRadius:60.0, borderWidth:0.0, borderColor:'transparent'}}/>
      </PhotoUpload>

1 Ответ

0 голосов
/ 24 июля 2019
uploadProfileImage = async (image:var) => {
this.setState({
  loading: true
});
var RNFS = require('react-native-fs');
const path = Style.IS_IOS ? image.uri : image.path;
var fileName = path.split('/').pop();
var fileType = fileName.split('.').pop();
var filePath = Style.IS_IOS ? path : 'file://' + path;

const apiURL = `${Constants.APIHOST}updateprofileimage.php`;
const formData = new FormData();
formData.append('accesstoken', this.state.user.sAccessToken);
formData.append('reactnative', 1);
formData.append('profileimage', {
  uri:filePath,
  name: fileName,
  type: `image/${fileType}`,
});
try {
  const response = await fetch(apiURL, {
    body: formData,
    method: 'POST',
    headers: {
      'Content-Type': 'multipart/form-data',
      'Accept': 'application/json',
    },
  })
  const json = await response.json()
  this.handleUploadImageResponse(json);
} catch (err) {
  this.setState({
    loading: false
  },console.log('catch Error: '+ err));
}

}

Я отвечаю на свой вопрос, так как не нашел ни одного правильного ответа для других пользователей, которые сталкиваются с такой же проблемой.

Пожалуйста, дайте мне знать, могу ли я улучшить свой ответ / сообщение или если мне понадобится какая-либо помощь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...