2

我正在使用 fileUpload 控件。当我上传文件时,我想找到文件的确切位置。

我尝试使用:

  1. string fname= Server.MapPath(FileUpload2.FileName);
  2. string fname= FileUpload2.FileName;
  3. string fname= FileUpload2.PostedFile.FileName;

数字 2 和 3 给了我文件的名称。1 号给了我网站位置的路径。我不知道 2 和 3 有什么区别,为什么两者都给了我相同的结果。

我在某处读到,您无法找到路径。这是真的吗?如果没有,我应该使用什么代码?

4

1 回答 1

1

没有实际的文件路径,因为上传到服务器的文件只是保存在内存中。

FileUpload控件只是一个HttpPostedFile实例的包装器,它本身基本上只是一个InputStream.

将文件实际保存在某处取决于您。在那之前,它不存在于任何物理位置。

FileName属性仅对应于来自客户端机器的文件名,减去路径。它与服务器文件系统上的任何内容都没有关联。

有几种不同的方法可以处理文件。

将文件保存到磁盘:

FileUpload 控件提供了一种SaveAs方法,允许您将文件保存在本地或您有权访问的某些 UNC。

FileUpload2.SaveAs("C:\\Temp\\" + FileUpload2.FileName);

处理内存中的文件:

由于您可以访问 ,因此FileContent您可以直接操作和处理文件。假设您知道它是什么类型的文件(txt、pdf、csv 等...)

using (var sr = new StreamReader(FileUpload2.FileContent)) 
{
    while ((var line = sr.ReadLine()) != null) 
    {
        //Do something with 'line'
    }
}
于 2013-08-24T21:10:55.633 回答