2015-10-20 16 views
6

Tôi đang cố gắng sử dụng FileSaver.js để tải xuống tệp PNG đang được phân phối từ ứng dụng nhanh của tôi. Các tệp đang được gửi dưới dạng chuỗi được mã hóa base64, nhưng khi tôi cố gắng sử dụng FileSaver.js để lưu chúng, chúng sẽ bị hỏng.Lưu tệp PNG bằng FileSaver.js

Đây là cách tôi đang cố gắng để cứu họ:

var blob = new Blob([base64encodedString], {type: "data:image/png;base64"}); 
saveAs(blob, "image.png"); 

Tôi cũng đã sử dụng phương pháp này tiết kiệm những hình ảnh, nhưng nó không hoạt động nếu base64encodedString trở nên quá lớn:

var download = document.createElement('a'); 
download.href = 'data:image/png;base64,' + base64encodedString; 
download.download = 'reddot.png'; 
download.click(); 

Tôi đang làm gì sai với FileSaver.js?

+0

Kiểm tra chuỗi base64 và đảm bảo nó hiển thị hình ảnh, bạn có thể sử dụng trình chuyển đổi base64 trực tuyến cho điều này nếu cần. nó có thể bị hỏng trước khi bạn gửi cho Trình tiết kiệm tệp để kiểm tra xem nó có hợp lệ trước không. –

+0

@JoshLeeDucks Tôi đã cố gắng chuyển đổi nó bằng công cụ trực tuyến, nhưng chưa thành công, nhưng khi tôi sử dụng phương pháp thứ hai để tải xuống (hình ảnh nhỏ nhất) nó hoạt động để nó cũng hoạt động cho phương pháp Blob. – martin

Trả lời

3

Tôi nhận thấy rằng trước tiên bạn có thể muốn viết nó lên Canvas.

Click Here

base_image = new Image(); 
base_image.src = Base64String 

vải thành một blob

var canvas = document.getElementById('YourCanvas'); 
context = canvas.getContext('2d'); 
// Draw image within 
context.drawImage(base_image, 0,0); 

sau đó bạn có thể sử dụng FileSaver.js để lưu nó

và cuối cùng là lưu nó

x_canvas.toBlob(function(blob) { 
saveAs(blob, "screenshot.png"); 
}, "image/png"); 

Một fiddle đẹp cũng được tạo ra cho điều này trong bài viết Click Here For Fiddle