webForumDet fria alternativet

Skicka fil till klient & ÅÄÖ

.NET

5 svar · 933 visningar · startad av paraxe

Medlem sedan apr. 2004298 inlägg
Frågan#1

Jag skickar filer till klienten med denna vedertagna kod.


File = "Min fil innehållande åäö.doc";

HttpContext.Current.Response.ContentType = "APPLICATION/OCTET-STREAM";
			
HttpContext.Current.Response.AddHeader( "Content-Disposition", "attachment;filename="+File);
			
HttpContext.Current.Response.WriteFile(FilePath);

Men när jag hämtar filnamnet via en Querystring så klipps "åäö" bort och jag får felet (fritt översatt):

hittade inte filen: C:\Min fil innehllande .doc

Har någon nån ide på varför inte detta skall fungera med en Querystring?

Mvh

Pär

Medlem sedan maj 20012 812 inlägg
#2

Du bör göra en URLEncode() på namnet innan du skickar iväg det vida querystringen och sedan när du tar emot namnet så gör du en URLDecode().

Du skall dina åäö finnas kvar i namnet.

dessa methoder tror jag du hittar i HTTPUtility.Server

- M

Medlem sedan apr. 2004298 inlägg
#3

Nej..

Det funkar inte för mig med URLEndode & URLDecode.

string File = System.Web.HttpUtility.UrlDecode(HttpContext.Current.Request.QueryString["file"], System.Text.Encoding.UTF7);

Men allt funkar när jag kör med:

<globalization 
            requestEncoding="utf-7" 
            responseEncoding="utf-7" 
   />

i web.config (tack icaaq)

Mvh

Pär

Medlem sedan apr. 2004298 inlägg
#4

Synd bara, att ändrar jag i web.config så fungerar inte resten av sidorna tillfredställande i IE, JavaScript börjar krångla för att inte tala om 3-dje-parts applikationer. :(

Så för att återgå till URLEncode har Ni några ideer varför inte det fungerar för mig? Förövrigt så URLEncodar jag med Classic ASP men det ska väl inte ha med saken att göra!?

/ P

Medlem sedan maj 20012 812 inlägg
#5

Det bör fungerar med UrlEncode()/UrlDecode() har du testat utan att skicka med en Encoding.

Följande fungerar bra för mig:

string filename = "Min fil innehållande åäö.doc";
string UrlEncodeFileName = HttpUtility.UrlEncode(filename);
string URLDecodeFileName = HttpUtility.UrlDecode(UrlEncodeFileName);

UrlEncodeFileName = "Min+fil+inneh%c3%a5llande+%c3%a5%c3%a4%c3%b6.doc"
URLDecodeFileName = "Min fil innehållande åäö.doc"

- M

Medlem sedan apr. 2004298 inlägg
#6

Tack Gladh för dina svar!

Följande fungerar bra för mig också (labb)

private void Page_Load(object sender, System.EventArgs e)
		{
			string filename = "Min fil innehållande åäö.doc"; 
			string UrlEncodeFileName = HttpUtility.UrlEncode(filename); 
			string URLDecodeFileName = HttpUtility.UrlDecode(UrlEncodeFileName); 
			//UrlEncodeFileName = "Min+fil+inneh%c3%a5llande+%c3%a5%c3%a4%c3%b6.doc";
			//URLDecodeFileName = "Min fil innehållande åäö.doc";

			Response.Write(filename +"<br>");
			Response.Write(UrlEncodeFileName +"<br>");
			Response.Write(URLDecodeFileName +"<br>");
			
		}

Men så fort jag matar strängen från en Querystring så fungerar det inte :(

Pröva denna labb

private void Page_Load(object sender, System.EventArgs e)
		{
			string filename = HttpContext.Current.Request.QueryString["file"]; 
			string UrlEncodeFileName = HttpUtility.UrlEncode(filename); 
			string URLDecodeFileName = HttpUtility.UrlDecode(UrlEncodeFileName); 
			//UrlEncodeFileName = "Min+fil+inneh%c3%a5llande+%c3%a5%c3%a4%c3%b6.doc";
			//URLDecodeFileName = "Min fil innehållande åäö.doc";

			Response.Write(filename +"<br>");
			Response.Write(UrlEncodeFileName +"<br>");
			Response.Write(URLDecodeFileName +"<br>");
			
		}

Mvh

Pär

262 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
127 ms — deklarationer (db)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)
121 ms — ändringar (db)