从ASP.NET C中的虚拟目录上传/下载#

时间:2015-01-22 09:40:33

标签: c# asp.net .net webforms

我希望能够从ASP.NET WebApp中的特定文件夹上传/下载文件, 现在因为app位于C:/目录中我不想占用该分区中的空间,所以我添加了一个指向文件夹E:/ Docs / Emps /的虚拟目录 现在我可以上传好..但我找不到E中的文件:/ Docs / Emps /它不存在, 当我搜索它们时,结果带有我在IIS中创建的虚拟文件夹中的URL, 现在,当我开始实施下载部分..我根本无法下载它, 我无法找到/访问[如果我设法找到它们]文件 在Google上花了太多时间之后,我尝试使用WebClient但是我得到了这个例外

  

消息
-----------
在WebClient请求期间发生异常。
-----------
内部异常
-----------
  System.NotSupportedException:不支持给定路径的格式。 at System.IO.FileStream.Init(String path,FileMode mode,FileAccess access,Int32 rights,Boolean useRights,FileShare share,Int32 bufferSize,FileOptions options,SECURITY_ATTRIBUTES secAttrs,String msgPath,Boolean bFromProxy,Boolean useLongPath,Boolean checkHost)at System System.Net.WebClient.DownloadFile(Uri address,String fileName)的.IO.FileStream..ctor(String path,FileMode mode,FileAccess access)
-----------
堆栈跟踪
-----------
  位于System.Net.WebClient.DownloadFile(Uri地址,String fileName)的System.Net.WebClient.DownloadFile(String address,String fileName)at APC_ERP.BusinessCore_EmployeesDocumentsCenter.imgbtnDownloadDocument_Click(Object sender,ImageClickEventArgs e)

这是我正在使用的下载代码

WebClient Client = new WebClient();
string Path = Server.MapPath("~/"+(sender as ImageButton).CommandArgument);
string[]File=Path.Split('/');
string Destination = @"C:\" + File[File.Length - 1];
Client.DownloadFile(Path, Destination);
Client.Dispose();

1 个答案:

答案 0 :(得分:1)

变量Path的内容似乎不正确。首先不支持正斜杠,其次波浪号(〜)可能是一个问题 - 虽然我不确定后者。由于我们无法查看您的数据,您应该调试并检查此路径变量以及Destination

此外,建议不要使用+来使用静态Combine方法进行与路径相关的操作。例如:

Path.Combine(@"\\root\", (sender as ImageButton).CommandArgument);