私はHeroku(cedar env)にレールアプリを持っています。キャンバスデータをtoDataURL()
メソッドを使ってイメージにレンダリングするページがあります。私は返されたbase64画像データ文字列をJavaScriptを使ってs3に直接アップロードしようとしています(サーバー側をバイパスしています)。問題は、これはファイルではないので、base64でエンコードされたデータを直接S3にアップロードしてそこにファイルとして保存するにはどうすればいいですか?JavaScriptのみを使用してbase64でエンコードされた画像データをS3にアップロードするにはどうすればよいですか?
14
A
答えて
23
私はこれを行う方法を発見しました。たくさんの検索の後、さまざまなチュートリアルを見てください。
データURIをBLOBに変換し、CORSを使用してそのファイルをS3にアップロードする必要があります。複数のファイルで作業している場合は、別々のXHR要求があります。
私は、誰もが気になら、直接CORS(Convert Data URI to Blob)
function dataURItoBlob(dataURI) {
var binary = atob(dataURI.split(',')[1]);
var array = [];
for(var i = 0; i < binary.length; i++) {
array.push(binary.charCodeAt(i));
}
return new Blob([new Uint8Array(array)], {type: 'image/jpeg'});
}
1
OPが既にこれを解決しているかどうかはわかりませんが、私は非常によく似た機能を使っています。ちょっとした研究をするにあたって、私はこれらの記事を読んで助けになるかもしれません。
3
を使用してS3にアップロードすることができブロブにあなたのデータURIをオンこの機能が見つかりました:ここcoffescriptです上記の関数のバージョン!
convertToBlob = (base64) ->
binary = atob base64.split(',')[1]
array = []
for i in [0...binary.length]
array.push binary.charCodeAt i
new Blob [new Uint8Array array], {type: 'image/jpeg'}
4
Jamcoopeの回答は非常に優れていますが、ブロブコンストラクタはすべてのブラウザでサポートされているわけではありません。最も顕著なのはアンドロイド4.1とアンドロイド4.3です。 Blob
ポリフィルがありますが、xhr.send(...)
はポリフィルでは機能しません。最高の賭けは次のようなものです:
var u = dataURI.split(',')[1],
binary = atob(u),
array = [];
for (var i = 0; i < binary.length; i++) {
array.push(binary.charCodeAt(i));
}
var typedArray = Uint8Array(array);
// now typedArray.buffer can be passed to xhr.send
関連する問題
- 1. Base64でエンコードされた画像をRailsでレンダリングするにはどうすればよいですか?
- 2. javascriptを使用してBase64でエンコードされたデータURI PNGのサイズを変更するにはどうすればよいですか?
- 3. amazon s3への画像アップロードにS3FSノードモジュールを使用する方法s3から画像URLを取得するにはどうすればよいですか?
- 4. Javascript/HTMLを使用してAdobe AIRアプリケーションで 'Base64'エンコードされた画像を表示するには
- 5. Base64でエンコードされたWebフォントの "onload"を検出するにはどうすればよいですか?
- 6. Laravelを使用して画像をウェブサイトにアップロードするにはどうすればよいですか?
- 7. html画像からbase64でエンコードされたデータを取得する方法
- 8. アンドロイドでBase64でエンコードされたJPEG画像をデコードし、ImageViewで表示するにはどうすればよいですか?
- 9. Expression Engine - SafeCrackerを使用して画像をアップロードするにはどうすればよいですか?
- 10. アクセストークンを使用して画像をアップロードするにはどうすればよいですか?
- 11. アップロードされている画像の名前を変更するにはどうすればよいですか?
- 12. Base64でエンコードされた画像がアンドロイドからサーバーにアップロードされるときに途切れる
- 13. 特定のファイル名でサーバーに画像データをアップロードするにはどうすればよいですか?
- 14. reveal.js、javascript、fragmentクラスを使用して画像を移動するにはどうすればよいですか?
- 15. Selenium IDEを使用して壊れた画像をテストするにはどうすればよいですか?
- 16. フォースペーストイベントは、base64で画像をエンコードする
- 17. Base64でHTML埋め込み画像私は次のようにHTMLにbase64エンコードされた画像を埋め込むい
- 18. s3にデータをアップロードするために使用されたSTSキーはどれですか?
- 19. Base64エンコードのjavascriptに.jpeg URLで画像にアクセスする方法
- 20. JavaScriptまたはjqueryを使用してアップロード前に画像をプレビューするにはどうすればよいですか?
- 21. Plone 4.1を使用してアップロードされたファイル/画像にバージョンコントロールを追加するにはどうすればよいですか?
- 22. base64で画像を正しくエンコードしていますか?
- 23. Cordova/Ionic appサーバーに署名したURLでbase64の画像をS3にアップロード
- 24. デジタルカメラで撮影した画像をアップロード/サイズ変更するにはどうすればよいですか?
- 25. Facebook Graph API:アップロードした画像にキャプションを追加するにはどうすればよいですか?
- 26. Base64はアップロードされたファイルをエンコードしてデータベースに保存します
- 27. PHP:メール()base64でエンコードされた画像を取り付けるには、テキスト
- 28. 4corner画像、4ライン画像、コンテンツdivを使用して画像に表示されるdivをデザインするにはどうすればいいですか?
- 29. 画像のURLが指定されている場合、その画像をFacebookのユーザーのアルバムにアップロードするにはどうすればよいですか?
- 30. チャンクエンコーディングを使用してデータをアップロードするにはどうすればよいですか?