私は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. Node.jsを使用してBase64でエンコードされた画像(文字列)をGoogle Cloud Storageバケットに直接アップロードするにはどうすればよいですか?
- 2. Base64でエンコードされた画像をRailsでレンダリングするにはどうすればよいですか?
- 3. GraphQLを使用してAWS S3に画像をアップロードするにはどうすればよいですか?
- 4. javascriptを使用してBase64でエンコードされたデータURI PNGのサイズを変更するにはどうすればよいですか?
- 5. JavaScriptを使用して画像サイズをアップロードするにはどうすればよいですか?
- 6. Base64でエンコードされた画像からのテキスト検出にGoogle Vision APIを使用するにはどうすればよいですか?
- 7. amazon s3への画像アップロードにS3FSノードモジュールを使用する方法s3から画像URLを取得するにはどうすればよいですか?
- 8. Javascript/HTMLを使用してAdobe AIRアプリケーションで 'Base64'エンコードされた画像を表示するには
- 9. base64でエンコードされたファイルをpaperclipに提出するにはどうすればよいですか?
- 10. expo画像ピッカーを使用して携帯端末からAWS S3に簡単な画像をアップロードするにはどうすればよいですか?
- 11. Appelseratorでbase64でエンコードされたSHA-512ハッシュを生成するにはどうすればよいですか?
- 12. Base64でエンコードされたWebフォントの "onload"を検出するにはどうすればよいですか?
- 13. MeteorでBase64データURIとしてイメージアセットをエンコードするにはどうすればよいですか?
- 14. Tkinterを使用してPythonで画像をアップロードするにはどうすればよいですか?
- 15. phpを使用してmysqlデータベースに画像をアップロードするにはどうすればよいですか?
- 16. Laravelを使用して画像をウェブサイトにアップロードするにはどうすればよいですか?
- 17. 画像URLを使用してAWS S3に画像をアップロードするにはどうすればよいですか?
- 18. JS:XMLHttpRequestを使用せずにローカルファイルをbase64でエンコードするにはどうすればよいですか?
- 19. Gmail API用にMIMETextを正しくbase64でエンコードするにはどうすればよいですか?より
- 20. html画像からbase64でエンコードされたデータを取得する方法
- 21. アンドロイドでBase64でエンコードされたJPEG画像をデコードし、ImageViewで表示するにはどうすればよいですか?
- 22. Expression Engine - SafeCrackerを使用して画像をアップロードするにはどうすればよいですか?
- 23. Django Rest Frameworkを使用して画像をアップロードするにはどうすればよいですか?ここ
- 24. Objective-C(iOS)を使用して画像Podio SDKをアップロードするにはどうすればよいですか?
- 25. アクセストークンを使用して画像をアップロードするにはどうすればよいですか?
- 26. MongoDB + Node.js(Express.js)を使用して画像をアップロードするにはどうすればよいですか?
- 27. TinyMCEを使用して画像をアップロードするにはどうすればよいですか?
- 28. Djangoで枕カバーの画像をS3にアップロードするにはどうすればいいですか?
- 29. アップロードされている画像の名前を変更するにはどうすればよいですか?
- 30. Django FormToolsフォームウィザードでデフォルトファイルストレージ(S3)を使用してファイルをアップロードするにはどうすればよいですか?