现在我用FileUpload上传excel文件,然后通过NPOI插入到数据库,下面是我几种获取方式报错的结果。请高手解惑,我怎么获取文件物理路径
我现在是通过一个单击事件传递给一个方法,然后直接
using (FileStream fsRead = File.OpenRead(Path))
{}
这么读取的,现在把下面的这4个路径分别传递过去
string str = Path.GetDirectoryName(fileUpload.PostedFile.FileName);
string str1 = Path.GetFullPath(fileUpload.PostedFile.FileName);
string str2 = fileUpload.PostedFile.FileName;
string str3 = fileUpload.FileName;
str:空路径名是非法的。(获取的是空的路径)
str1:未能找到文件“C:\ProgramFiles\CommonFiles\MicrosoftShared\DevServer\11.0\测试数据.xls”。这里的测试数据我是放在D盘的根目录下的,这里获取的只有一个文件名称和后缀名(测试数据.xls)
str2:同str1。
str3:同str1。
求解惑,在线等,怎么才能获取物理路径
string fileName = fileUpload.ShortFileName;
fileName = DateTime.Now.Ticks.ToString() + "_" +fileName;
fileUpload.SaveAs(Server.MapPath("~/Upload/..." + fileName));
string FilePath = ResolveUrl(Server.MapPath("~/Upload/..." +fileName));
你这个是上传到服务器,然后从服务器开始读取,相当于给程序里面复制了一份,这也就是两份,但是我现在想的是直接从磁盘读取,比如根目录在D盘,得到的路径就是 D:\测试数据.xls
你上传后的PostedFile实际上是没有保存在硬盘上的,所以你用File来操作肯定是会报错的。
PostedFile有个InputStream属性,你可以试试用NPOI直接读取这个流,或者按楼上的,先保存到指定位置再读取。
我现在using的就是
using (FileStream fsRead = File.OpenRead(Path)){//这里的path就是路径}
所以现在很迷茫,不知道怎么搞了,复制一份出来肯定可以,但是我不想复制,大神,还有什么着吗?
@_Vegetables:
把using去掉,直接用PostedFile.InputStream替换fsRead