2016-05-09 8 views
4

Как отправить путь к файлу в качестве параметра строки запроса?Слэши в параметре строки запроса?

Это мой строковый параметр:

//domain/documents/Pdf/1234.pdf

Я пробовал:

[HttpPost] 
    [Route("documents/print/{filePath*}")] 
    public string PrintDocuments([FromBody] string[] docs,string filePath) 
    { 
     ..... 
    } 

Но это не работает , Я думаю, из-за двойных косых черт в начале параметра.

Любая идея?

+0

Можете ли вы не просто кодировать путь к файлу? – DoctorMick

ответ

5

Если, как вы говорите, вся целая строка является параметром, а не маршрутом, вам нужно будет закодировать URL. Вы всегда должны делать это в любом случае:

System.Net.WebUtility.UrlEncode(<your string>); 
// %2F%2Fdomain%2Fdocuments%2FPdf%2F1234.pdf 

Update

Так что не работает, я хотел бы предложить вам Base64 кодирует его вместо URL кодировать его:

var plainTextBytes = System.Text.Encoding.UTF8.GetBytes(<your string>); 
var encodedFilePath = System.Convert.ToBase64String(plainTextBytes); 

. . и в вашем контроллере его декодировать:

byte[] data = Convert.FromBase64String(filepath); 
string decodedString = Encoding.UTF8.GetString(data); 
+0

Спасибо, не могли бы вы привести пример того, как это сделать? – user3378165

+0

Если бы я не был на моем телефоне в данный момент. Проверьте mvc urlhelper. Если возможно, я избегаю system.web. – Crowcoder

+0

Спасибо! 1-я пробовал это, но я получаю ошибку 404, это мой URL: http: // localhost: 111/MySolution/api/documents/print /% 5C% 5Cdomain% 5Cdocuments% 5CPdf% 2F1234.pdf, Любая идея как это решить? 2-вы могли бы объяснить, почему вы избегаете system.web? Спасибо! – user3378165

0
System.Web.HTTPUtility.UrlEncode(@"//domain/documents/Pdf/1234.pdf") 
Смежные вопросы