查询字符串参数中的斜杠?
Slashes in a query string parameter?
如何将文件路径作为查询字符串参数发送?
这是我的字符串参数:
//domain/documents/Pdf/1234.pdf
我试过了:
[HttpPost]
[Route("documents/print/{filePath*}")]
public string PrintDocuments([FromBody] string[] docs,string filePath)
{
.....
}
但这不起作用,我猜是因为参数开头的双斜杠。
有什么想法吗?
如果像您所说的那样,整个字符串都是参数,而不是路由,则您需要 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);
System.Web.HTTPUtility.UrlEncode(@"//domain/documents/Pdf/1234.pdf")
如何将文件路径作为查询字符串参数发送?
这是我的字符串参数:
//domain/documents/Pdf/1234.pdf
我试过了:
[HttpPost]
[Route("documents/print/{filePath*}")]
public string PrintDocuments([FromBody] string[] docs,string filePath)
{
.....
}
但这不起作用,我猜是因为参数开头的双斜杠。
有什么想法吗?
如果像您所说的那样,整个字符串都是参数,而不是路由,则您需要 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);
System.Web.HTTPUtility.UrlEncode(@"//domain/documents/Pdf/1234.pdf")