2011-05-30 13 views
5

Tôi muốn tạo tệp văn bản trong javascript động, sau đó cung cấp tệp này để tải xuống. Hiện nay tôi có thể làm việc này ở một mức độ với một trong các giải pháp sau:Làm cách nào để tạo tệp và cung cấp tệp để tải xuống bằng javascript thuần túy?

content = "abc123"; 
document.location = "data:text/octet-stream," + encodeURIComponent(content); 

HOẶC

content = "abc123";  
var bb = new BlobBuilder(); 
bb.append(content); 
var blob = bb.getBlob(); 
blob = blob.slice(0, blob.size, 'text/octet-stream'); 
var fr = new FileReader(); 
fr.onload = function() {document.location = this.result;} 
fr.readAsDataURL(blob); 

Tuy nhiên, Cả hai giải pháp, khi tải hộp xuất hiện, chỉ sẽ cung cấp một tên tập tin mặc định của 'tải xuống' trong lưu dưới dạng đối thoại.

Câu hỏi của tôi là về cơ bản, làm thế nào tôi có thể thay đổi điều này để một tên tập tin cụ thể ví dụ 'readme.txt' hoặc 'scene.obj'

Cũng lưu ý các kiểu dữ liệu trước đây 'text/plain' tuy nhiên nếu điều này được sử dụng, tài liệu sẽ chuyển sang tài liệu văn bản mới thay vì cung cấp tài liệu để tải xuống (dưới dạng văn bản/octet-stream có vẻ như đang thực hiện).

Tôi không muốn có giải pháp flash, chỉ nên có javascript/html5 đề xuất.

Chúc mừng, Josh

+0

thể trùng lặp của [Có cách nào để chỉ định tên tệp được đề xuất khi sử dụng dữ liệu: URI không?] (http://stackoverflow.com/questions/283956/is-there-any-way-to-specify-a-suggested-filename- khi sử dụng-dữ liệu-uri) –

+0

Điều này có vẻ trùng lặp với liên kết được đề xuất, không chắc chắn lý do tại sao tôi không tìm thấy nó khi tôi tìm kiếm. Những người muốn có câu trả lời cho câu hỏi này nên theo liên kết. –

Trả lời

4

Cho rằng, bạn sẽ phải sử dụng FileSaver từ FileAPI: đặc điểm kỹ thuật Writer. Hiện tại, nó chỉ là bản nháp và theo số mailing list answer nó chưa được triển khai trong trình duyệt.

Bạn có thể xem ví dụ về một chromium issue để có được thông tin cập nhật về tiến độ thực hiện

UPD 2013/08/02: Tôi có kể từ khi tìm thấy một project cung cấp giao diện FileSaver sử dụng thủ đoạn gọn gàng

+1

IE10 tính năng msSaveOrOpenBlob và msSaveBlob. Theese là hai phương pháp có sẵn trong IE10 cho phép các trang web yêu cầu người dùng lưu một blob vào máy tính của họ. Thêm tại http://blogs.msdn.com/b/ie/archive/2012/01/27/creating-files-through-blobbuilder.aspx – Alexander

0

Tôi nghĩ bạn nên kiểm tra: jQuery Table to CSV export

+0

Các giải pháp này trông giống như chúng phụ thuộc vào kịch bản phía máy chủ, tôi đang tìm cách gắn bó với phía máy khách. Cảm ơn bạn đã đề xuất. –