Greetings,Triggering một download file mà không cần bất kỳ yêu cầu máy chủ
Tôi đang làm việc trên một ứng dụng JS dựa trên hiện một số công việc phức tạp và ghi lại một số thông tin (trên thực tế, lên đến hàng trăm dòng) trên <div>
.
Mục tiêu của tôi là có nút "Lưu nhật ký" kích hoạt hộp thoại tải xuống của trình duyệt để lưu nội dung ghi nhật ký của tôi <div>
.
chính xác hơn, đó là những yêu cầu về tính năng này:
- Người dùng cuối cùng phải có toàn quyền kiểm soát các tập tin. S/anh ta có thể lưu/lưu trữ nó để tham khảo trong tương lai, gửi nó tới bộ phận hỗ trợ để được trợ giúp giải quyết một số vấn đề, tải nó trở lại ứng dụng, v.v. Vậy API lưu trữ web của HTML5 không giúp ích gì (dữ liệu sẽ được lưu vào một vị trí do trình duyệt xác định và sẽ không thể dễ dàng truy xuất được ngoại trừ từ JS tạo ra nó).
- Ứng dụng phải có khả năng hoạt động ngoại tuyến (ít nhất trong một số trường hợp). Đó là, và hiệu quả, là lý do tại sao tôi loại bỏ ý tưởng POST dữ liệu đến máy chủ để lấy lại nó với tiêu đề "Bố cục nội dung".
- Tệp phải được đánh dấu đúng là
text/plain
, do đó trình duyệt có thể đề xuất các tác vụ mặc định (như "Mở trên notepad") giống như khi tải xuống tệp thông thường. Điều này có thể được xem như là một khía cạnh cụ thể của yêu cầu đầu tiên. - Nói cho người dùng sao chép và dán nội dung của
<div>
vào trình chỉnh sửa văn bản và lưu nó từ đó chắc chắn là khủng khiếp và chính xác là lý do tôi đang cố tránh.
Tôi đã tìm kiếm trên trang web này, trên các trang web WHATWG và W3C và trên web nói chung không thành công. Liệu điều này có thể làm được không?
Gần nhất tôi có được là sử dụng địa chỉ data:
. Nỗ lực đầu tiên của tôi, thực hiện một hành động POST, không thể có được một loại nội dung thông qua, do đó, nó sẽ trở lại với các chẩn đoán của UA. Tôi đã nhận được nó tốt hơn một chút bằng cách tạo một liên kết <a>
trông giống như một nút và gán cho nó thuộc tính type
, nhưng sau đó UA sẽ phát quá thông minh và hiển thị nội dung thay vì lưu (và yêu cầu người dùng lưu tệp từ trình duyệt tại bước đó thậm chí còn tồi tệ hơn so với cách tiếp cận sao chép-dán, vì tiết kiệm trang thay đổi rất nhiều giữa các trình duyệt).
Nếu chỉ có một số cách để kết hợp một URL data:
với gợi ý giống như "bố cục nội dung", mọi thứ có thể thực sự suôn sẻ.
Kính trọng, Herenvardo
Có đang sử dụng một plugin như Flash không? Tôi không biết liệu nó có thể làm với HTML tiêu chuẩn, nhưng nó sẽ là khá dễ dàng nếu Flash là một lựa chọn ... –
Tôi đã có một câu hỏi tương tự http://stackoverflow.com/questions/2832392/can-you- do-file-io-using-javascript-without-activex nhưng chỉ có một câu trả lời. Tôi không nghĩ rằng nó là có thể mặc dù. –
Có phải "sao chép vào clipboard với mã và yêu cầu người dùng dán nó vào notepad (hoặc trình soạn thảo văn bản yêu thích)" ý tưởng xuất hiện không? Clipboard có thể xử lý megabyte, notepad có thể bị nghẹt thở trên một vài megabyte mặc dù. Mặt khác: xem http://stackoverflow.com/questions/17836273/export-javascript-data-to-csv-file-without-server-interaction – TWiStErRob