2010-09-17 25 views
15

Trong khi tôi đang làm việc trên mã để tải tập tin từ máy chủ sử dụng:Sự cố tải tệp xuống: tên tệp có dấu cách bị cắt bớt!

Response.AddHeader("Content-Disposition", "attachment; filename=" + 
Server.UrlPathEncode(Path.GetFileName(_Filename))); 

Vấn đề là trong khi có khoảng trống trong tên tập tin, với mã này, máy chủ chia tự động trong khi việc tìm kiếm không gian đầu tiên!

Tôi hy vọng sẽ biết tại sao & giải pháp cho điều đó là gì?

Trả lời

5

Tôi tìm thấy giải pháp :)

Chúng ta phải bao vây tên tập tin với cotation đôi như:

Response.AddHeader ("Content-Disposition", "tập tin đính kèm; filename = \"" + Path. GetFileName (_Filename) + "\" ");

Nhưng cho đến bây giờ, tôi không có bất kỳ ý tưởng nào về việc chia tách này?

39

Bạn cần quấn tên tệp trong dấu ngoặc kép.

string filename = Server.UrlPathEncode(Path.GetFileName(_Filename))); 
Response.AddHeader("Content-Disposition", "attachment; filename=\"" + filename + "\""); 

Nếu không, mã sẽ giả định rằng tên tệp kết thúc ở khoảng trắng đầu tiên.

Bạn có thể không cần Server.UrlPathEncode.

1

Hãy thử trích dẫn tên tập tin và không mã hóa nó như vậy

Response.AddHeader("Content-Disposition", "attachment; filename=\"" + Path.GetFileName(_Filename) + "\""); 
0

Đây là trường hợp với firefox ..

Tôi tìm thấy một câu trả lời bởi Alfonso Martinez ở đây: https://bugzilla.mozilla.org/show_bug.cgi?id=221028#c1

[Alfonso Martinez] đang nói về vấn đề này trong #mozillazine với Christian Biesinger và Boris Zbarsky, và họ nói rằng đây là hành vi thích hợp theo RFC.

Giải pháp đó chỉ là đặt tên tệp được trích dẫn và sau đó mọi thứ sẽ hoạt động tốt như đó là cú pháp dự kiến.

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