我在我的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