私は何をしようとしているのですか?自分のデータベースからSelect Storeプロシージャを読み込み、csvファイルにデータを保存して、Webアプリケーションからダウンロードできるようにします。私は、一時的に私のプログラムの折り畳みにファイルを保存し、filestreamを使用して、要求された結果を得ることができました。私が今やりたいことは、ファイルが私のコンピュータに保存されている部分をスキップし、一時的にそれをRAMメモリに保存することです。私は理解したことから、私はファイルストリームの代わりにメモリストリームを使用する必要がありますが、私はそれをどうやってできるのか本当に分かりません。私が読んだことから理解したことは、ファイルを使用する代わりに、データをバイトに変換してmemorystreamを作成し、それをFileStreamResultで使用する必要があるということです。私はここで正しいですか?私は手続きから読み取られたcsvfileに保存filestreamの代わりにmemorystreamを使用する方法
方法:
public static String StoreApproved()
{
string path1 = HttpRuntime.AppDomainAppPath + "Report.csv";
SqlConnection sqlConnection1 = new SqlConnection("CONNECTIONSTRING");
SqlCommand cmd = new SqlCommand();
SqlDataReader reader;
cmd.CommandText = "ExportApproved";
cmd.CommandType = CommandType.StoredProcedure;
cmd.Connection = sqlConnection1;
sqlConnection1.Open();
reader = cmd.ExecuteReader();
List<ModelStoreProcedureApproved> TestList = new List<ModelStoreProcedureApproved>();
ModelStoreProcedureApproved test ;
while (reader.Read())
{
test = new ModelStoreProcedureApproved();
// test.Id = int.Parse(reader["IdTimeTracker"].ToString());
test.Month = reader["Month"].ToString();
test.EmailUser = reader["Email"].ToString();
test.Project = reader["Name"].ToString();
test.Approved = reader["Description"].ToString();
test.Month = reader["Month"].ToString();
test.Year = reader["Year"].ToString();
TestList.Add(test);
}
File.Create(path1).Close();
var i = TestList.FirstOrDefault();
using (TextWriter fileReader = new StreamWriter(path1))
{
var csv = new CsvWriter(fileReader);
csv.Configuration.Encoding = Encoding.UTF8;
foreach (var value in TestList)
{
csv.WriteRecord(value);
}
fileReader.Close();
}
sqlConnection1.Close();
return path1;
}
コントローラーコード:
public ActionResult ExportToCSV()
{
string path = Repositories.UserRepository.StoreApproved();
var fileStream = new FileStream(path,
FileMode.Open,
FileAccess.Read);
return new FileStreamResult(fileStream, "text/csv") { FileDownloadName = "export.csv" };
}
誰かがこれを行うための最善の方法は何であるかを私に説明できますか?私はあなたがこのようにそれを行うことができます Serialize and Deserialize using BinaryFormatter
BinaryFormatter and Deserialization Complex objects
Using CSVHelper to output stream to browser
例外が発生します。System.ObjectDisposedException:閉じられたストリームにアクセスできません。 –
なぜそれが起こったのかわからないので、バイトを使用してみてください。結果を渡すためにバイトを使用するようにコードを更新しました。 –
Worked !!どうもありがとうございました。それが私にできるときに答えを承認するでしょう –