我正在使用fileUpload控件。当我上传文件时,我想找到文件的确切位置。
我尝试使用:
string fname= Server.MapPath(FileUpload2.FileName);
string fname= FileUpload2.FileName;
string fname= FileUpload2.PostedFile.FileName;
数字2& 3给了我文件的名称。 1号给了我网站位置的路径。我不知道2和3之间的区别是什么,为什么两者都给了我相同的结果。
我在某处读到,你无法得到这条路。这是真的吗?如果没有,我应该使用什么代码?
答案 0 :(得分: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'
}
}