asp.net(c#)Webサイトにファイルアップロードコントロールがあります。これは、データベースに挿入するデータを含む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リーダーを使用しています。クエリするファイルが必要です。
ストリームをクエリすることは可能ですか?ファイルを保存したくありません。代わりに、保存せずにファイルを読み取ります。