Mam aplikację szyny na Heroku (cedr env). Ma stronę, na której renderuję dane obszaru roboczego do obrazu przy użyciu metody toDataURL()
. Próbuję przesłać zwrócony ciąg danych obrazu base64 bezpośrednio do s3 przy użyciu JavaScript (z pominięciem strony serwera). Problem polega na tym, że skoro nie jest to plik, w jaki sposób mogę przesłać zakodowane dane base64 bezpośrednio do S3 i zapisać je jako plik?Jak przesłać zakodowane dane obrazu base64 do S3 przy użyciu JavaScript?
Odpowiedz
Znalazłem sposób to zrobić. Po wielu poszukiwaniach oglądania różnych tutoriali.
Konieczne jest przekonwertowanie danych URI na blob, a następnie przesłanie tego pliku do S3 przy użyciu CORS, jeśli pracujesz z wieloma plikami, mam osobne żądania XHR dla każdego z nich.
Znalazłem tę funkcję, która zamienia URI danych do blob, które mogą być następnie przesłany do S3 bezpośrednio za pomocą 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'});
}
Nie jestem pewien, czy OP już to rozwiązał, ale pracuję nad bardzo podobną funkcją. Przeprowadzając trochę badań, natknąłem się na te artykuły, które mogą być pomocne.
Jeśli ktoś dba: oto coffeescript wersja funkcji podana powyżej!
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'}
Odpowiedź Jamcoope jest bardzo dobra, jednak konstruktor blob nie jest obsługiwany przez wszystkie przeglądarki. Przede wszystkim Android 4.1 i Android 4.3. Istnieją wielokropki o numerach Blob
, ale xhr.send(...)
nie będzie działać z polyfill. Najlepszym rozwiązaniem jest coś takiego:
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. otwierać i zapisywać dane zakodowane base64 obrazu URI w Ruby
- 2. Jak przygotować zakodowane dane POST w javascript?
- 3. Android przekonwertować ciąg base64 zakodowane w polu widzenia obrazu
- 4. Jak odtwarzać dane dźwiękowe base64 na firefoxie przy użyciu HTML5?
- 5. Jak uzyskać kodowane base64 dane z obrazu html
- 6. nodejs ładowanie do s3 przy użyciu knox?
- 7. Jak przekonwertować RGB na 1px base64 zakodowane dane uri w php
- 8. prześlij dane obszaru roboczego do s3
- 9. Konwersja obrazu do base64
- 10. Zapisywanie obrazu zapisanego na s3 przy użyciu pliku node.js?
- 11. Puste zdjęcie zakodowane jako dane-uri
- 12. Jak przesłać obrazy z FileReader do Amazon s3, używając meteoru
- 13. Jak przesłać Java OutputStream do AWS S3
- 14. Jak mogę przesłać zbiorczo do s3?
- 15. Jak kodować obraz base64 javascript
- 16. Jak przesłać tajny obraz przy użyciu polecenia "uruchom kubectl"?
- 17. Jak przenieść obraz base64 z klienta na serwer lub pobrać plik binarny/base64 z s3?
- 18. Konwertuj dane binarne na base64 za pomocą javascript
- 19. Ustawienie obiektu obrazu jako obrazu tła div przy użyciu javascript
- 20. Dekodowanie danych base64 do obrazu
- 21. BASE64 do obrazu kątowej 2
- 22. Typ wejściowy = "plik" zestaw danych obrazu base64
- 23. Jak zapisywać dane binarne do pliku przy użyciu pliku node.js?
- 24. OpenPGP Podpis Packet zakodowane dane
- 25. Jak przesłać duży plik przy użyciu WCF
- 26. Jak mogę ustawić źródło obrazu z base64
- 27. Jak uzyskać wartość RGB obrazu na stronie przy użyciu javascript?
- 28. jak zrobić kodowanie html przy użyciu javascript?
- 29. jak przesłać plik do mojego serwera przy użyciu html
- 30. Przesyłanie obrazu przy użyciu JQuery i Django