2011-10-23 9 views
2

私はこのようなJavaScriptコードを持っている:我々は(代わりにスペース)任意の+印を持っていないfilePathにはRequest.QueryString ["path"]はすべての+記号をスペースに変換するのはなぜですか?

public void ProcessRequest(HttpContext context) 
{ 
    Context = context; 
    string filePath = context.Request.QueryString["path"]; 
    filePath = context.Server.MapPath(filePath); 
} 

function OnRequestComplete(result) { 
     // Download the file 
     //Tell browser to open file directly 
     alert(result); 
     var requestImage = "Handler.ashx?path=" + result; 
     document.location = requestImage; 
} 

とHandler.ashxコードは、このようなものです。
この問題を解決するにはどうすればよいですか?
Request.QueryString ["path"]はすべての+記号をスペースに変換するのはなぜですか?

+0

チェックこの回答:http://stackoverflow.com/questions/123994/querystring-malformed-after-urldecode/124027#124027 –

+0

クエリ文字列は、独自の構文や予約文字を持っています。自分でファイル名をエンコードします。 –

答えて

4

クエリ文字列を正しくエンコードすると、スペースは+になり、+%2Bになります。デコードのプロセスは逆を行います。そのため、あなたの+がスペースに変換されます。

問題は、クエリ文字列encodeが表示されなかったことです。これは、正しくデコードされないことを意味します。

var requestImage = "Handler.ashx?path=" + encodeURIComponent(result); 
+0

回答ありがとう/私はjavascriptでそのクエリ文字列をエンコードする必要がありますか?どうやって? – MoonLight

+0

更新された回答。 –