2012-01-09 43 views
7

Từ chuỗi này, chúng tôi nhận được từ DataURL, cách tốt nhất để tải xuống tệp này dưới dạng tệp là gì?Tải xuống tệp từ DataURL trong JavaScript

Cho đến thời điểm này, tôi đã sử dụng số window.open("myDataURL"); cơ bản, nhưng tôi không thể thay đổi tên tệp theo cách này.

window.open('data:application/msword;base64,0M8R4KGxGuEAAAAAAAAAAAAAAAAAAAAA 
      PgADAP7/CQAGAAAAAAAAAAAAAAACAAAANQAAAAAAA 
      AAAEAAANwAAAAIAAAD+////AAAAADQAAABsAA/', 
      '_blank','height=300,width=400'); 

Tôi đã tự hỏi liệu có cách nào xử lý dữ liệu này đúng cách hay không.

+0

Xem http://stackoverflow.com/a/6465780/27862 – user123444555621

+0

Tôi đã nhìn thấy câu hỏi này trước đây, tên tập tin trở thành "rVPjLUq1.part", cũng giống như khi tôi đang sử dụng ví dụ Tôi đã đăng ở trên. – eBergamo

+0

Như Wladimir Palant viết, vấn đề đã được [thảo luận trong danh sách gửi thư của W3C] (http://lists.w3.org/Archives/Public/uri/2010Feb/thread.html#msg58), nhưng "điều này không dường như đã biến nó thành bất kỳ đặc điểm kỹ thuật nào cho đến nay, hãy để một mình triển khai trình duyệt. " Tôi e rằng không có bất kỳ tiến bộ nào trong vấn đề đó. – user123444555621

Trả lời

0

Hãy thử điều này:

data:application/msword;fileName=test.doc;base64,0M8R4KGxGuEAAAAAAAAAAAAAAAAAAAAAPgADAP7/CQAGAAAAAAAAAAAAAAACAAAANQAAAAAAAAAAEAAANwAAAAIAAAD+////AAAAADQAAABsAA/ 

Nhưng đây chỉ là một phỏng đoán từ googling xung quanh và có thể trình duyệt phụ thuộc. Câu trả lời thực sự cho điều này là, bạn không thể - Xem http://www.ietf.org/rfc/rfc2397 để tham khảo, không có gì trong đặc tả để hỗ trợ tên tệp.

+0

Phải, nó không hoạt động. Nó chỉ có nghĩa là để sử dụng hình ảnh? Bởi vì nó không phải là một lợi thế lớn nếu bạn không thể tái sử dụng "giá trị" này và tạo lại một tệp với nó. Tôi vẫn đang tìm kiếm câu trả lời để khắc phục vấn đề này ... bằng cách sử dụng JSP hoặc Java. Nhưng tôi không thể thấy không có liên kết về cách xử lý dataURL theo cách này. – eBergamo

+0

URI dữ liệu có nghĩa là để xử lý dữ liệu thô theo cách tương thích với URI. Giống như ví dụ nhúng hình ảnh hoặc văn bản vào một tài liệu khác mà nếu không sẽ mong đợi một phần tử được liên kết bên ngoài. – bardiir

+0

Tôi hiểu. Trong phương pháp của chúng tôi để có được nội dung tập tin, chúng tôi sử dụng reader.readAsDataURL (file) của chúng tôi; ... Nếu tôi sử dụng nó readAsBinaryString thay vào đó, tôi sẽ có thể tạo lại các tập tin của tôi (pdf, xls, docs) sau? – eBergamo

3

bạn có thể thêm một thuộc tính tải xuống vào phần tử neo. mẫu:

<a download="abcd.zip" href="data:application/stream;base64,MIIDhTCCAvKg........">download</a> 
+1

Điều này không hỗ trợ trong IE – Nipuna

+0

Chỉ Chrome mới có thể hoạt động với tính năng này ngay bây giờ. – cuixiping

+0

Nó cũng không giải quyết câu hỏi của OP về việc chỉ định một tên tệp cho thuộc tính window.open (từ Javascript, không phải HTML). – srlm