2013-02-11 41 views
13

Tôi đang xuất tệp PDF trong trình duyệt Web (IE8) HttpContext.Response.writefile(fileName) và nó hoạt động tốt. Khi tôi cố gắng lưu tệp, nó sẽ cho tôi tên của trình xử lý ashx làm mặc định. Tôi muốn thực sự truyền tên thật.Trình xử lý PDF: tên tệp nội dung bố trí

Tôi cố gắng để thêm thông tin tiêu đề như sau:

context.Response.AddHeader("content-disposition", "attachment; filename=" + fileInfo.Name); 

Và nó hoạt động nhưng tôi không muốn người dùng phải lựa chọn giữa mở và lưu, tôi muốn các tập tin để mở bình thường và nếu người dùng chọn lưu nó sau đó hộp thoại sẽ cung cấp cho anh ta/cô ấy tên tệp mặc định.

Tôi cũng đã cố gắng:

context.Response.AddHeader("content-disposition", "inline; filename=" + fileInfo.Name); 

Hoặc chỉ cần, như Scott Hanselman suggested in his blog.

context.Response.AddHeader("content-disposition", "filename=" + fileInfo.Name); 

Không ai trong số đó phù hợp với tôi. Không ai có bất kỳ ý tưởng?

Trả lời

2

Trong trường hợp INLINE, có vẻ như nhà thám hiểm Internet đang sử dụng tham số cuối cùng trong URL để tạo tên tệp. Ví dụ nếu url của bạn là http://doc.com/131231231 IE sẽ nhắc bạn lưu các tập tin như 131231231.pdf Nếu bạn cần một tên tập tin ví dụ foo_131231231.pdf bạn có thể hack các trình duyệt IE bằng cách sử dụng url này: http://doc.com/foo_131231231 Bạn có thể bị thay đổi ứng dụng của bạn hơi mong đợi thông số xấu xí như vậy, nhưng vào cuối ứng dụng của bạn sẽ hoạt động như bạn mong đợi.

2

Tôi cũng đã gặp phải vấn đề này. gì giúp tôi là cũng để thiết lập contentType để application/pdf (thay vì application/x-pdf, đó là lỗi thời)

response.setContentType("application/pdf"); 
response.setHeader("Content-disposition", "inline; filename=\"Report.pdf\""); 
Các vấn đề liên quan