2013-10-30 14 views
6

Tôi hiện đang có mã này:Nhắc người dùng lưu tệp bằng hộp thoại 'Lưu dưới dạng'?

function download(filename, text) { 
     var pom = document.createElement('a'); 
     pom.setAttribute('href', 'data:text/plain;charset=utf-8,' + encodeURIComponent(text)); 
     pom.setAttribute('download', filename); 
     pom.click(); 
} 

download('test.html', string); 

chuỗi chứa rất nhiều mã html đó được viết trong file a.html. Đoạn mã trên hoạt động hoàn hảo. Khi nhấp vào nút, trình duyệt (chrome) sẽ tự động tải xuống tệp html có nội dung chuỗi được viết trong đó. Bây giờ, những gì tôi muốn làm là, thay vì chrome tải xuống tệp tự động, nó sẽ mở một hộp thoại lưu dưới dạng và hỏi người dùng vị trí và tên của tệp và sau đó tải xuống vị trí đó. Một câu trả lời đơn giản sẽ nhanh chóng được đánh giá cao.

+1

Tôi nghĩ rằng nó sẽ luôn sử dụng hành vi mặc định, bởi vì đây là những gì người dùng mong đợi. –

+0

Vâng, trong trường hợp của tôi, người dùng có thể đặt vị trí và tên của tệp cần lưu ... –

+0

Điều đó sẽ tự động xảy ra nếu trình duyệt không hướng dẫn trình duyệt của họ thực hiện khác. Nhưng có lẽ bạn có thể ép buộc nó bằng cách cung cấp một loại mime khác thông qua thuộc tính 'type' cho liên kết. – CBroe

Trả lời

4

Trình duyệt của tôi được đặt để tự động tải xuống tất cả các tệp ở vị trí mặc định, đó là lý do tại sao không chỉ tệp này mà tất cả các tệp khác từ trình duyệt của tôi được tải xuống trực tiếp mà không cần lưu lời thoại. Thay đổi cài đặt trong trình duyệt thành 'luôn hỏi vị trí tải xuống' đã hoạt động.

+0

Tôi đã thử tất cả mọi thứ. Bạn đã cứu tôi. –

2

Cách duy nhất để làm điều này là để thiết lập các tiêu đề của các tập tin trên máy chủ, như vậy:

<FilesMatch "\.(?i:pdf)$"> 
    ForceType application/octet-stream 
    Header set Content-Disposition attachment 
</FilesMatch> 

Thuộc tính tải không cho phép bạn thay đổi tên tập tin hoặc filetype nữa vì nó là một nguy cơ bảo mật rõ ràng.

Những gì bạn đang cố gắng để làm điều đó sao chép các nhấp chuột phải - lưu-như đối thoại nhưng tôi sợ rằng không phải là có thể vào lúc này.

Các vấn đề liên quan