Cách đặt tên tệp phản hồi mà không buộc hộp thoại "lưu dưới dạng"


119

Tôi đang trả lại một luồng trong một số phản hồi đặt content-typetiêu đề thích hợp . Hành vi mà tôi đang tìm kiếm là:

  • Nếu trình duyệt có thể hiển thị nội dung của loại nội dung nhất định thì trình duyệt sẽ hiển thị nó trong cửa sổ trình duyệt.

  • Nếu trình duyệt không biết cách hiển thị nội dung, thì nó sẽ hiển thị hộp thoại "lưu dưới dạng" trong đó tên tệp phải là tên được cung cấp trong phản hồi.

Vấn đề là nếu tôi đặt Content-Dispositiontiêu đề bằng:

"file đính kèm; filename =" myfile.txt ""

trình duyệt sẽ luôn hiển thị hộp thoại "lưu dưới dạng".

Nếu tôi không đặt Content-Disposition, tên tệp được sử dụng trong hộp thoại "lưu dưới dạng" là tên trong URL không hoạt động trong trường hợp của tôi.

Tôi cũng đã cố gắng thiết lập Content-Dispositionđể inlinenhưng kết quả là như nhau.

Câu trả lời:


170

Cách đúng có thể là:

Content-Disposition: inline; filename="myfile.txt"


7
Tôi không chắc ý của bạn về việc 'không được ủng hộ rộng rãi' khi bạn viết câu trả lời này, và mong bạn đưa ra những dữ kiện khó thay vì FUD. Tôi vừa thử nghiệm trên IE 6, IE 8, Chrome hiện đại và Firefox hiện đại, và nó hoạt động trên tất cả chúng; Theo như tôi có thể nói, nó hoàn toàn an toàn để sử dụng cái này ngày nay.
Mark Amery

Không hoạt động với FireFox 37.0.2 và Internet Explorer 11.0.18 của tôi. Tôi được hiển thị với hộp thoại Lưu dưới dạng. Chrome vẫn hoạt động.
angularsen

3
Trên thực tế, nó hoạt động trên cả Firefox 37.0.2 và IE 11.0.18 (vừa được thử nghiệm). Có thể bạn đang sử dụng Loại-Nội dung mà trình duyệt của bạn không thể hiển thị nội tuyến.
Patonza

1
Một số lưu ý cũng được đề cập trong các cuộc thảo luận khác nhau tại stackoverflow.com/questions/93551/… - nếu bạn có khoảng trắng trong tên tệp của mình, bạn cần có dấu ngoặc kép ( ") xung quanh tên tệp của mình. Nếu bạn có các ký tự không phải ASCII trong tên tệp của mình, bạn sẽ thấy câu hỏi khác đó để thảo luận về những việc cần làm.
Christopher Schultz

Không hoạt động với PDF trong IE11.0.96. Không có gì ngạc nhiên, Chrome hoạt động tốt.
user1566694

2

Tôi không chắc liệu điều đó có thể theo mặc định hay không. Do các lo ngại về bảo mật, các trình duyệt không gửi tất cả các loại nội dung mà chúng có thể xử lý, nhưng chỉ một số loại Accept-Encoding, điều này không giúp ích nhiều cho trường hợp của bạn.

Có thể bạn có thể hỏi người dùng của mình họ thích gì và lưu trữ thông tin đó trong hồ sơ của họ.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.