2017-11-23 3 views
0

GETパスビデオファイルをネイティブのアップロード動画を反応させネイティブイメージピッカー反応:ではとフェッチブロブとイメージピッカー

{path: "/storage/emulated/0/DCIM/Camera/VID_20171123_122202.mp4", uri: 
"content://media/external/video/media/50"} 

送信ファイルをネイティブに反応ラップでBLOBをフェッチ:

 let url=CounterStore.base_url+'upload/video? 
    &api_token='+CounterStore.api_token; 
     RNFetchBlob.fetch('POST', url, { 
      'Content-Type' : 'multipart/form-data', 
     }, [ 

    // part file from storage 
    { name : 'avatar-foo', filename : 'avatar-foo.png', 
    type:'image/foo', data: RNFetchBlob.wrap(this.state.data.path)}, 
    // elements without property `filename` will be sent as plain text 
    { name : 'name', data : 'user'}, 
    { name : 'info', data : JSON.stringify({ 
    mail : '[email protected]', 
    tel : '12345678' 
      })}, 
     ]).then((resp) => { 
      console.log(resp) 
     }).catch((err) => { 
      console.log(err) 
     }) 

ビデオを返しませんサーバ内のデータ:

`FetchBlobResponse {data: "{"name":"user","info":"{\"mail\":\"[email protected]…p8njbIxpJGLDA8fte6QEgbWQOVU3Vhf","avatar-foo":{}}", taskId: "8f`vfiutibvhss2jt8eh62", type: "utf8", respInfo: {…}, info: ƒ, …} 

avator-fooは空です。なぜですか?あなたのコードで

答えて

0

三つの問題...

  1. ファイル形式はMP4であるべきで、あなたは、ファイル名に.pngの拡張子を与えています。
  2. ラップURLはパスではありません。
  3. ペイロードにタイプを指定する必要はありません。

ImagePicker.showImagePicker(options, (response) => { 
 

 
      if (response.didCancel) { 
 
      } 
 
      else if (response.error) { 
 
      } 
 
      else if (response.customButton) { 
 
      } 
 
      else { 
 
       let source = { uri: response.uri } 
 
       RNFetchBlob.fetch('POST', URL, { 
 
        // dropbox upload headers 
 
        ... 
 
        'Content-Type': 'multipart/form-data', 
 
        // Change BASE64 encoded data to a file path with prefix `RNFetchBlob-file://`. 
 
        // Or simply wrap the file path with RNFetchBlob.wrap(). 
 
       }, [ 
 
         // element with property `filename` will be transformed into `file` in form data 
 

 
         { name: 'file', filename: 'vid.mp4', data: RNFetchBlob.wrap(response.uri) }, 
 
         // custom content type 
 

 
        ]).then((res) => { 
 

 
        }) 
 
        .catch((err) => { 
 
         // error handling .. 
 
        }) 
 
       this.setState({ 
 
        avatarSource: source 
 
       }); 
 
       .... 
 
      } 
 
     });

下記チェック例
関連する問題