【发布时间】:2018-07-03 12:02:55
【问题描述】:
我在以下场景中使用FileUpload控件来处理文件,我的机器中有downloaded手动的一些文件,现在我需要一一选择文件来处理它们在Database中的数据并映射这些文件文件到另一个位置(服务器)。
我有一个执行此功能的方法,它需要该文件的完全限定路径来进一步处理它。我使用了fileUpload.PostedFile.FileName,它只返回文件名,而不是 FQN。
if (fileUploadList.HasFile)
{
string source = ddActiveList.SelectedItem.Text;
string url = fileUploadList.PostedFile.FileName;
string name = "Name";
string id = "1";
bool res = SaveFileToLocalMachine(url, name, id, source);
}
private bool SaveFileToLocalMachine(string url, string fileName, string sourceId, string source)
{
bool flag = false;
lSource = new Object();
string savePath = "@\\myPath";
if (!Directory.Exists(savePath))
{
DirectoryInfo di = Directory.CreateDirectory(savePath);
}
using (var client = new WebClient())
{
try
{
string fileExt = System.IO.Path.GetExtension(url);
string file = fileName + fileExt;
client.DownloadFile(url, savePath + file);
lSource.Update();
flag = true;
}
catch (Exception ex)
{
flag = false;
}
}
return flag;
}
【问题讨论】:
-
为什么要知道路径?只有 Internet Explorer 提供了它(它确实不应该),而且它对你来说毫无用处(因为它为你提供了客户端 PC 上的路径 - Web 服务器无权访问)?
-
@mjwills 我需要将其提供给我的函数,该函数实际上将该文件保存到经过修改的机器
-
你需要改变你的服务器端逻辑。浏览器不提供它(IE 除外)。没有办法解决它。
-
那么我将如何完成需要这些条件的任务?任何建议
-
@trighati:你还没明白。网络服务器通常无法访问客户端的文件和文件夹。客户端将文件提供给服务器,服务器不会从客户端下载它。所以你的逻辑被打破了。您已经在
fileUploadList.PostedFile中拥有该文件。
标签: c#