我在我的asp.net(c#)网站上有一个文件上传控件,用于上传带有要插入数据库的数据的csv文件,我的问题是,我无法获得上传文件有没有办法在c#中查询流,例如。 select * from一个流对象
的实际路径它总是给我: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读者。 需要查询文件。
是否可以查询流?我不想保存文件,而只是读取它而不保存。
你不能查询Streamreader的数据..你必须先保存文件... – 2012-07-23 12:05:33