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
5 svar · 933 visningar · startad av paraxe
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
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
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
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
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
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