首页 新闻 会员 周边 捐助

FileUpload文件路径问题

0
悬赏园豆:5 [已解决问题] 解决于 2015-03-02 15:52

现在我用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。

求解惑,在线等,怎么才能获取物理路径

_Vegetables的主页 _Vegetables | 小虾三级 | 园豆:586
提问于:2015-03-02 10:53
< >
分享
最佳答案
1

                string fileName = fileUpload.ShortFileName;
                fileName = DateTime.Now.Ticks.ToString() + "_" +fileName;
                fileUpload.SaveAs(Server.MapPath("~/Upload/..." + fileName));
                string FilePath = ResolveUrl(Server.MapPath("~/Upload/..." +fileName));

收获园豆:2
小码编匠 | 菜鸟二级 |园豆:221 | 2015-03-02 11:09

你这个是上传到服务器,然后从服务器开始读取,相当于给程序里面复制了一份,这也就是两份,但是我现在想的是直接从磁盘读取,比如根目录在D盘,得到的路径就是  D:\测试数据.xls   

_Vegetables | 园豆:586 (小虾三级) | 2015-03-02 12:31
其他回答(1)
0

你上传后的PostedFile实际上是没有保存在硬盘上的,所以你用File来操作肯定是会报错的。

PostedFile有个InputStream属性,你可以试试用NPOI直接读取这个流,或者按楼上的,先保存到指定位置再读取。

收获园豆:3
I,Robot | 园豆:9783 (大侠五级) | 2015-03-02 15:25

我现在using的就是 

using (FileStream fsRead = File.OpenRead(Path)){//这里的path就是路径}

所以现在很迷茫,不知道怎么搞了,复制一份出来肯定可以,但是我不想复制,大神,还有什么着吗?

支持(0) 反对(0) _Vegetables | 园豆:586 (小虾三级) | 2015-03-02 15:35

@_Vegetables: 

把using去掉,直接用PostedFile.InputStream替换fsRead

支持(0) 反对(0) I,Robot | 园豆:9783 (大侠五级) | 2015-03-02 15:39
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册