を使用してテキスト ファイルを書き込もうとしOutputStream.Write
ましたが、ファイルの最後の文字が送信されていないことに気付きました。
ファイルが 6KB であろうと 242KB であろうと、最後の文字はスキップされます。
AwAIB0UfFlJTSTNABEQWGgMVAhNFBkVeKgVTSx4LCVQMBUUQRUMwBVFTGwcAEAASRRNTBipNQQMFDREYB
BUAH0VIKgVLRVccCRFFGRcbR08wREgDEQENEUkCDRNOTX5cS1ZXHgQGHFYIB0NOfgUIAwMABFQABBcdUg
YpRFcDHgZBAA0TRTEDBj1KQEZXREEdRRIKHFQGK0tARgUbFRULEkUFSF9+R1FXVxwJEUUkAAFQSTBWQQ0
xBBQHDV5MUkFIOgV2RgQYDhoWE0sxTEktQAwKVx8AB0UCDRcAQyxXS1FZSBUcBAIWUldDN1dAAxEHE1QI
E0UTTkJ+TARAFgYVVBAYARdSVSpESkdXAAAcBFg=
注:テキスト ファイルでは、テキスト全体が 1 行です。
私のテキストファイルは、上記と多少似ています。誰でも私を助けることができますか?
私のコード:
var path = Request.QueryString["path"];
path = Server.MapPath(Url.Content("~/Files/" + path + "/somefile.txt"));
Response.Buffer = false;
Response.ContentType = "text/plain";
FileInfo file = new FileInfo(path);
int len = (int)file.Length, bytes;
Response.AppendHeader("content-length", len.ToString());
byte[] buffer = new byte[1024];
Stream outStream = Response.OutputStream;
using (Stream stream = System.IO.File.OpenRead(path))
{
while (len > 0 && (bytes = stream.Read(buffer, 0, buffer.Length)) > 0)
{
outStream.Write(buffer, 0, bytes);
len -= bytes;
}
}
Response.Flush();
Response.Close();
更新 1: ファイルの完全なテキストが表示されるようになりました。
更新 2: 完全な C# コードを更新しました。
更新 3:
皆様、ご尽力いただきありがとうございます。私はどういうわけかそれを機能させました-問題はResponse.Flush()
そしてでしたResponse.Close()
; これら2つのステートメントを削除すると、機能し始めました。私はいつも and を使用しているので、なぜこの問題が発生したのかわかりませResponse.Flush()
んResponse.Close()
。この種のエラーを受け取ったことはありませんが、これは初めてです。誰かが私に説明を与えることができれば、それはありがたいです。@AlexeiLevenkov の投稿を回答としてマークします。 and なしで再度テストしたところ、Response.Flush
機能Close()
しています。