2010-11-03 108 views
1

我有一个网页,提示用户使用fileupload控件的Excel文件。然后它使用OleDbConnection将文件读入数据表中,然后使用该数据运行其他代码。当我在Visual Studio中测试时,它工作正常。例如,我可以查找文件'g:\ myfiles \ upldtest.xls',它找到该文件,读取它并且代码正常工作。当我尝试在我们的Web服务器上运行它时,在尝试创建OleDBConnection时出现错误,它试图创建OleDbConnection并且路径'g:\ myfiles \ upldtest.xls'无效。ASP .NET无效路径

我试图使用ManagementObjectSearcher将连接字符串路径转换为UNC(\\ MyDataServer \ myfiles而不是g:\ myfiles)。当我测试它时,它显示了正确的路径,但是当我将页面上传到Web服务器时,我仍然得到路径'g:\ myfiles \ upldtest.xls'无效。

我用它来确定所需的文件的名称是这个

串TNAME = FileUpload1.PostedFile.FileName的代码; //文件名和路径

string gname = tname.Substring(tname.LastIndexOf(“\\”)+ 1); //路径名称

任何想法我失踪?我的合同要求我使用VS2005和.NET Framework 2.0,所以我不能使用任何新的东西。预先感谢您的帮助。

+0

权限问题? – brumScouse 2010-11-03 20:59:01

+0

我不这么认为,我得到了服务器上的故障,我想我有权限,除非......这是IIS 6的问题? – RT1138 2010-11-09 19:58:05

回答

2

HttpPostedFile.FileName返回客户机上文件的全限定名称。

需要调用SaveAs()实际的文件保存在服务器上:

using System.IO; 

string filename = Path.GetFileName(FileUpload1.PostedFile.FileName); 
string filepath = Path.Combine(@"X:\Your\Own\Upload\Folder", filename); 
FileUpload1.PostedFile.SaveAs(filepath); 

// Now use `filepath` as your data source. 

IIS可能已经写入文件的临时位置,以节省内存,但因为你不能(和不应该”吨)访问该位置,它没有区别。

+0

对不起,延迟的答复,并感谢您的答复。我无法将文件传输到服务器上。我需要能够将文件读入内存并以此方式处理。大多数运行此操作系统的最终用户将无权将文件上传到服务器。 – RT1138 2010-11-09 20:00:11

1

你还应该知道跨浏览器的问题。 IE在文件上传时将整个路径发送到服务器,而Firefox/Chrome则不会。

+0

对于好的或坏的,我们只使用IE。感谢您的回应。 – RT1138 2010-11-09 20:00:37