我在我的asp.net(c#)网站上有一个文件上传控件,用于上传带有要插入数据库的数据的csv文件,我的问题是,我无法获取上传文件的实际路径
它总是给我:C:\inetput\projectfolder\csvname.csv
它应该类似于:C:\Documents and settings\Pcname\Desktop\csvname.csv
但是通过文件上传的各种帖子,我知道文件需要先保存在服务器上,
使用Fileupload1.Saveas(savepath);
这是将文件保存在先前指定的位置所必需的,而实际上并不需要。(因为它会增加再次删除文件的开销)。
那么我所做的如下:
bool result = true;
strm = FileUpload1.PostedFile.InputStream;
reader2 = new System.IO.StreamReader(strm);
// **** new ****
FileInfo fileinfo = new FileInfo(FileUpload1.PostedFile.FileName);
string savePath = "c:\\"; // example "c:\\temp\\uploads\\"; could be any path
string fileName = fileinfo.Name;
string strFilePath = savePath.ToString();
savePath += fileName;
FileUpload1.SaveAs(savePath);
string strSql = "SELECT * FROM [" + fileinfo.Name + "]";
string strCSVConnString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + strFilePath + ";" + "Extended Properties='text;HDR=NO;'";
// load the data from CSV to DataTable
OleDbDataAdapter oleda = new OleDbDataAdapter(strSql, strCSVConnString);
DataTable dtbCSV = new DataTable();
oleda.Fill(dtbCSV);
if (dtbCSV.Columns.Count != 2)
{
result = false;
}
因为我想计算文件中的列数,所以我使用的是 oledb 阅读器。需要查询一个文件。
是否可以查询流?我不想保存文件,而是直接读取而不保存。