Почему Request.QueryString ["path"] преобразует все знаки + в пробелы? - PullRequest
2 голосов
/ 23 октября 2011

У меня есть такой код JavaScript:

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 выглядит так:

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

В filePath у нас нет знаков + (пробелы)вместо этого).
Как я могу решить эту проблему?
Почему Request.QueryString ["path"] преобразует все знаки + в пробелы?

1 Ответ

4 голосов
/ 23 октября 2011

При правильном кодировании строки запроса пробел становится +, а + становится %2B.Процесс декодирования происходит в обратном порядке, поэтому ваш + превращается в пробел.

Проблема в том, что вы не кодировали строку запроса, и это означает, что онанеправильно декодируется.

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