从C#上传文件到aspx页面。得到一个:
PathTooLongException
The specified path, file name, or both are too long. The fully qualified file name must be less than 260 characters, and the directory name must be less than 248 characters.
以下是代码:
try
{
using (var client = new WebClient())
{
String url =
String.Format(
"http//localhost:49536/ManualUploadTest.aspx?key={0}&name={1}&address={2}&phone={3}&email={4}&node={5}",
"changeme",
"john",
"10 Downing Street",
"555 555 6165",
"test@yahoo.com",
"TestNode");
var len = url.Length; // this length is 146
var encodeLen = HttpUtility.UrlEncode(url).Length; // this length is 180
//client.BaseAddress = "http//localhost:49536";
byte[] result = client.UploadFile(HttpUtility.UrlEncode(url), path);
// throws exception during UploadFile
// ... more code here
url字符串如下所示:
http//localhost:49536/ManualUploadTest.aspx?key=changeme&name=john&address=10 Downing Street&phone=555 555 6165&email=test@yahoo.com&node=TestNode
路径是:
Y:\\10mb.zip
感谢您的帮助!
答案 0 :(得分:4)
尝试修复网址:http://...
而不是http//...
;另外,我使用的是Uri
课程,而不是UrlEncode()
。
Uri url = new Uri(String.Format("http://localhost:49536/ManualUploadTest.aspx?key={0}&name={1}&address={2}&phone={3}&email={4}&node={5}",
HttpUtility.UrlEncode("changeme"),
HttpUtility.UrlEncode("john"),
HttpUtility.UrlEncode("10 Downing Street"),
HttpUtility.UrlEncode("555 555 6165"),
HttpUtility.UrlEncode("test@yahoo.com"),
HttpUtility.UrlEncode("TestNode")));
byte[] result = client.UploadFile(url, path);
编辑:我追踪异常的原因...如果你提供一个字符串,它会尝试在内部创建一个Uri(由于格式错误的协议http//
而失败),然后它试图获得完整的使用Path.GetFullPath(url)
的Uri的路径,然后使用PathTooLongException
失败。