2010-09-17 14 views
15

Choć pracuję nad kodem, aby pobrać plik z serwera przy użyciu:Problem z pobieraniem pliku: nazwa pliku z obciętymi spacjami!

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

Problem polega na tym, mając jednocześnie spacji w nazwie pliku, z tym kodem podział serwer automatycznie przy poszukiwaniu pierwszego miejsca!

Mam nadzieję dowiedzieć się, dlaczego & jakie jest rozwiązanie tego problemu?

Odpowiedz

5

znalazłem rozwiązanie :)

Musimy otaczać nazwę pliku z podwójnym cotation jak:

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

Ale do tej pory nie miałem pojęcia o tym podziale?

39

Musisz zawinąć nazwę pliku w podwójny cudzysłów.

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

W przeciwnym razie kod zakłada, że ​​nazwa pliku kończy się na pierwszym polu.

Być może nie potrzebujesz Server.UrlPathEncode.

1

Spróbuj podając nazwę pliku i nie kodujące je jak tak

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

Jest to przypadek z Firefoksem ..

znalazłem odpowiedź Alfonso Martinez tutaj: https://bugzilla.mozilla.org/show_bug.cgi?id=221028#c1

[Alfonso Martinez] mówił o tym problemie w #mozillazine z Christianem Biesinger i Borisem Zbarskim, i powiedzieli, że to jest właściwe zachowanie zgodnie z RFC.

Rozwiązaniem jest umieszczenie cytowanej nazwy pliku, a następnie wszystko zadziała dobrze, ponieważ jest to oczekiwana składnia.