2016-05-25 7 views
1

リモートストレージからオーディオファイルを取得したい。バイナリデータを処理するためにメソッド "fetch"のresponse-resultを使用するにはどうすればよいですか?私は、反応ネイティブfsでそれらをローカルファイルシステムに保存したい。しかし、私はバイナリBLOBにアクセスするためのメソッド "fetch"の戻り値のドキュメントはどこにもありません。 私はフェッチの応答をCONSOLE.LOGしようとしましたが、バイナリデータで、XcodeのはunresponsibleReact Native:リモートからバイナリファイルをロードするには?

ている私はこのような何かを探していますその後、ぶら下がっている:

fetch(mediaUrl).then((response) => { 
     let blob = response.getBinaryData() 
    }) 

(getBinaryDataが有効な方法をis'nt 。そして、まさにこの私の質問です:?バイナリデータを取得する方法)

更新

一部の人々は、「response.blob()」が指すが、この方法は、反応し、ネイティブに実装されていません。

"response.blobは関数ではありません。( ')(response.blob' は、 'response.blobは' 未定義である)"

答えて

-1

私はこれを調査しばらく過ごしました。もっと知るべきことがあると思いますが、私はhttps://developer.mozilla.org/en-US/docs/Web/API/Blobhttps://developer.mozilla.org/en-US/docs/Web/API/Body/blobから始まります。

ここでは動作するRNコードスニペットがあります。

url = 'https://www.google.com/images/branding/googlelogo/2x/googlelogo_color_272x92dp.png'; 
opts = {} 
return fetch(url, opts) 
    .then(response => response.blob()) 
    .then(blob => { 
    console.log('blob', blob); 
    let reader = new FileReader(); 
    reader.addEventListener("loadend", function() { 
     console.log(reader.result); 
    }); 
    reader.readAsDataURL(blob); 
    }); 
} 
+1

においては、反応ネイティブ、ブロブ()関数として実装されていません:「response.blobが関数でない( ')(response.blob' で、「応答。 blob 'は定義されていません) " – itinance

+0

イメージは' base64'、 'ascii'、' utf-8'のいずれかで保存されます。任意のアイデアをローカルファイルシステムに '.png'として直接保存する方法はありますか? – Stophface

+0

@Stophface plzは私自身の答えを見てください:https://stackoverflow.com/a/46443715/1397160 – itinance

1

私は完全に約1年半前に自分の本(時代遅れの)質問を忘れてしまったし、最終的には、適切な答えを提供します:ライブラリreact-native-fs 1で

をバイナリファイルや店舗、それらをダウンロードすることができますディスクストレージ上のバイナリ、オーディオファイルはreact-native-soundでよく再生され、ビデオファイルはreact-native-videoでうまく再生できます。

例コード:

const downloadOptions = { 
    fromUrl: imageUrl, 
    toFile: filename 
    } 
    return yield RNFS.downloadFile(downloadOptions).promise.then((res) => { 
    if(res.statusCode == 200) { 
     return true; 
    } 
    else { 
     console.log("Download failed", res); 
     return false; 
    } 

    }) 
    .catch((err) => { 
    console.log('DownloadFile Error', err); 
    return false; 
    }); 
関連する問題