【问题标题】:Getting full path of file in asp.net c# with FileUpload control [duplicate]使用FileUpload控件在asp.net c#中获取文件的完整路径[重复]
【发布时间】: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#


【解决方案1】:

网络服务器通常不能(也不应该)访问客户端的文件和文件夹。他甚至不应该获得客户端的文件系统(这是 IE 允许的一段时间)。但是无论如何您都不应该需要它,因为您已经从客户端上传了文件。它位于FileUpload.PostedFile

你要的方法已经有了,FileUpload.SaveAs

fileUploadList.SaveAs(savePath);

【讨论】:

  • 不是有至少五十个副本基本上包含这个答案吗?
  • @CodeCaster:是的,现在我找到了
  • 更不用说许多浏览器供应商停止发送文件路径,因为它从 Web 服务器对你没有用,因为你没有连接到客户端。如果您确实尝试在文件路径上构建一个进程,那么您将有一个脆弱的进程,因为在某些时候它们都会停止发送此信息。
猜你喜欢
  • 2013-03-07
  • 2010-11-10
  • 2018-10-24
  • 2015-11-03
  • 2011-05-13
  • 2012-06-03
  • 2013-02-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多