Tôi có một ứng dụng đường ray trên Heroku (cedar env). Nó có một trang nơi tôi hiển thị dữ liệu canvas thành hình ảnh bằng phương pháp toDataURL()
. Tôi đang cố tải chuỗi dữ liệu hình ảnh base64 trả về trực tiếp lên s3 bằng JavaScript (bỏ qua phía máy chủ). Vấn đề là vì đây không phải là một tệp, làm thế nào để tôi tải trực tiếp dữ liệu được mã hóa base64 lên S3 và lưu nó dưới dạng tệp ở đó?Làm cách nào để tải lên dữ liệu hình ảnh được mã hóa base64 lên S3 bằng cách sử dụng JavaScript?
Trả lời
Tôi đã tìm thấy một cách để làm điều này. Sau khi tìm kiếm nhiều hướng dẫn khác nhau.
Bạn phải chuyển đổi URI dữ liệu thành blob và sau đó tải tệp đó lên S3 bằng CORS, nếu bạn đang làm việc với nhiều tệp, tôi có các yêu cầu XHR riêng biệt cho mỗi tệp.
tôi thấy chức năng này mà biến bạn URI dữ liệu vào một blob mà sau đó có thể được tải lên S3 trực tiếp sử dụng 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'});
}
Không chắc OP có đã giải quyết vấn đề này hay không nhưng tôi đang làm việc trên một tính năng rất giống. Trong một nghiên cứu nhỏ, tôi đã xem các bài viết này có thể hữu ích.
Nếu bất cứ ai quan tâm: đây là coffescript phiên bản của hàm được đưa ra ở trên!
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'}
Câu trả lời của Jamcoope rất tốt, tuy nhiên trình tạo blob không được tất cả các trình duyệt hỗ trợ. Đáng chú ý nhất là android 4.1 và android 4.3. Có Blob
polyfills, nhưng xhr.send(...)
sẽ không hoạt động với polyfill. Đặt cược tốt nhất là một cái gì đó như thế này:
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. tải lên dữ liệu canvas vào s3
- 2. Cách mã hóa base64 hình ảnh trong javascript
- 3. Cách lấy dữ liệu được mã hóa base64 từ hình ảnh html
- 4. Node.js base64 mã hóa hình ảnh đã tải xuống để sử dụng trong dữ liệu URI
- 5. Tải lên Amazon S3 bằng cách sử dụng cURL/libcurl
- 6. Tải lên hình ảnh lớn bằng Base64 và JSON
- 7. Tệp được tải lên mã hóa Base64 sau đó lưu vào cơ sở dữ liệu
- 8. Tải hình ảnh lên Twitter bằng cách sử dụng PHP
- 9. Thêm siêu dữ liệu vào hình ảnh tải lên S3 bằng Python
- 10. Tôi làm cách nào để tải lên hàng loạt s3?
- 11. Sử dụng ServiceStack để tải lên các tệp hình ảnh
- 12. AWS S3 Tải hình ảnh lên ứng dụng Bucket iOS
- 13. loại nội dung được sử dụng để tải hình ảnh svg lên AWS S3
- 14. Làm cách nào để tải lên tệp có siêu dữ liệu bằng dịch vụ web REST?
- 15. chuyển đổi tệp hình ảnh thành chuỗi base64 bằng cách sử dụng javascript
- 16. Tải hình ảnh được tạo JavaScript lên Django
- 17. Không thể tải lên hình ảnh trong các nút bằng cách sử dụng aws-sdk
- 18. Cách tạo hình ảnh GD từ jpeg được mã hóa base64?
- 19. tinyMCE - cách xử lý tải lên hình ảnh
- 20. Cách sử dụng hình ảnh/hình ảnh tải lên nhiều phần/hình thức dữ liệu trên Android
- 21. Hình ảnh mã hóa Base64
- 22. ASP.NET MVC - Tải hình ảnh lên Amazon S3
- 23. Tải dữ liệu từ tệp excel lên cơ sở dữ liệu bằng cách sử dụng java
- 24. Làm thế nào để bạn dịch dữ liệu trong đối tượng FileReader thành dữ liệu biểu mẫu để tải lên?
- 25. cách tải hình ảnh lên ACF bằng update_field trên wordpress
- 26. Cách tải hình ảnh lên canvas HTML5
- 27. Tiến trình tải lên hình ảnh bằng cách sử dụng URLLoader AS3
- 28. Tải lên hình ảnh bằng Phonegap: InvalidCastException
- 29. Node.JS - Mã hóa hình ảnh trong base64 bằng cách sử dụng bộ đệm
- 30. Tải lên hình ảnh bằng cách sử dụng JQuery và Django