Javascript React native 0.62.0-Android上文件上载的网络请求错误

Javascript React native 0.62.0-Android上文件上载的网络请求错误,javascript,android,react-native,file-upload,Javascript,Android,React Native,File Upload,我已经将react native升级到了0.62,并且我只在Android上遇到了网络错误的问题,iOS可以正常工作 我使用FormData对象填充格式化为 const data = new FormData(); // On Android i add file protocol to file path - file://... data.append('photos', { uri: 'file:///data/.../my-image.jpeg', type: 'im

我已经将react native升级到了0.62,并且我只在Android上遇到了网络错误的问题,iOS可以正常工作

我使用FormData对象填充格式化为

const data = new FormData(); 
// On Android i add file protocol to file path - file://... 
data.append('photos', { 
   uri: 'file:///data/.../my-image.jpeg', 
   type: 'image/jpeg',
   name: 'my-image.jpeg' 
});
和其他文本数据

data.append('description', 'my long description...');
有人有这个问题吗

我尝试了多个Android SDK 27、28、29,但都遇到了相同的问题:(

问题是,如果我不上传图像,但只有文本数据请求可以正常工作:(


任何建议欢迎:)?

发布此bec我使用react-native ssl固定和react-native映像裁剪选择器使其工作

FormData

file: {
    uri: image.path,
    type: image.mime,
    name: 'image.jpg',
    fileName: 'image.jpg',
    size: image.size,
  },
还有取回

fetch(url, {
  method: 'POST',
  sslPinning: { certs: ['cert'] },
  body: {
    formData: formData,
  },
  headers: {
    Authorization:
      'Bearer Token',
    Accept: 'application/json; charset=utf-8',
    'Content-type': 'multipart/form-data; charset=UTF-8',
  },
})

这是因为Flipper网络插件。 文件
android/app/src/debug/java/com//ReactNativeFlipper.java

38      NetworkFlipperPlugin networkFlipperPlugin = new NetworkFlipperPlugin();
39      NetworkingModule.setCustomClientBuilder(
40          new NetworkingModule.CustomClientBuilder() {
41            @Override
42            public void apply(OkHttpClient.Builder builder) {
43      //        builder.addNetworkInterceptor(new FlipperOkhttpInterceptor(networkFlipperPlugin));
44            }
45          });
46      client.addPlugin(networkFlipperPlugin);

在Flipper版本0.39.0和更高版本中,此问题已得到修复。我刚刚将Flipper更新到版本0.40.0,它工作正常

  • 在android/app/src/main/java/com/{yourProject}/MainApplication.java中 请在下面一行发表评论:

    initializeFlipper(this, getReactNativeHost().getReactInstanceManager())
    
  • 在android/app/src/debug/java/com/{yourProject}/ReactNativeFlipper.java中 第43行中的注释:

    builder.addNetworkInterceptor(new FlipperOkhttpInterceptor(networkFlipperPlugin));
    
  • 图像上传代码:

    var formData = new FormData();
       formData.append('UserId', 'abc@abc.com');
       formData.append('VisitId', '28596');
       formData.append('EvidenceCapturedDate', '09/10/2019 13:28:20');
       formData.append('EvidenceCategory', 'Before');
       formData.append('EvidenceImage', {
         uri: Platform.OS === 'android' ? `file:///${path}` : `/private${path}`,
         type: 'image/jpeg',
         name: 'image.jpg',
       });
       axios({
         url: UrlString.BaseUrl + UrlString.imageUpload,
         method: 'POST',
         data: formData,
         headers: {
           Accept: 'application/json',
           'Content-Type': 'multipart/form-data'
         },
       })
         .then(function (response) {
           console.log('*****handle success******');
           console.log(response.data);
    
         })
         .catch(function (response) {
           console.log('*****handle failure******');
           console.log(response);
         });
    

  • 谢谢你的帮助!这可能会对其他人有所帮助,因为我切换到了模块。它对表单数据和文件都很好。我也会尝试一下。我遇到了同样的问题……你能解决同样的问题吗?