asp.Netネットワークファイルのダウンロード
13142 ワード
ウェブサイトの設計の過程で、圧縮パッケージ、ドキュメント、映画・テレビ資源など、アップロードされたファイルをダウンロードする必要があります.では、ダウンロードできる機能が必要です.もちろん、一般的なダウンロード機能は、ユーザーに保存または開くように促すことができ、ダウンロード中にリアルタイムで進捗と速度を提示し、ダウンロードの大きさを提示することができます.ダウンロード中に、エラーが発生したときに、異常エラーを報告することができます.これ以上ないでしょう.今日の例では、システムのダウンロード例を呼び出しました.具体的には、コードを参照してください.
具体的なコードはもう注釈しました.役に立つことを望んでいます.
private
bool
DownLoadFile()
{
//
string
filePath
=
Server.MapPath(
"
~/DownLoad/myFiles
"
);
string
downLoadFile
=
"
test.mkv
"
;
FileInfo fileName
=
new
FileInfo(filePath
+
"
\\
"
+
downLoadFile);
FileStream fileStream
=
new
FileStream(filePath
+
"
\\
"
+
downLoadFile, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
//
BinaryReader binaryReader
=
new
BinaryReader(fileStream);
//
if
(fileName.Exists)
{
try
{
long
startBytes
=
0
;
string
lastUpdateTimeStamp
=
File.GetLastWriteTimeUtc(filePath).ToString(
"
r
"
);
string
encodeData
=
HttpUtility.UrlEncode(downLoadFile, Encoding.UTF8)
+
lastUpdateTimeStamp;
//
response
Response.Clear();
Response.Buffer
=
false
;
Response.AddHeader(
"
Accept-Ranges
"
,
"
bytes
"
);
Response.AppendHeader(
"
ETag
"
,
"
\"
"
+
encodeData
+
"
\"
"
);
Response.AppendHeader(
"
Last-Modified
"
, lastUpdateTimeStamp);
//
contenttype
Response.ContentType
=
"
application/octet-stream
"
;
//
,
Response.AddHeader(
"
Content-Disposition
"
,
"
attachment;filename=
"
+
fileName.Name);
Response.AddHeader(
"
Content-Length
"
, (fileName.Length
-
startBytes).ToString());
Response.AddHeader(
"
Connection
"
,
"
Keep-Alive
"
);
//
Response.ContentEncoding
=
Encoding.UTF8;
//
binaryReader.BaseStream.Seek(startBytes, SeekOrigin.Begin);
//
, 1024
int
maxCount
=
(
int
)Math.Ceiling((fileName.Length
-
startBytes
+
0.0
)
/
1024
);
//
1024 ,
int
i;
for
(i
=
0
; i
<
maxCount
&&
Response.IsClientConnected; i
++
)
{
Response.BinaryWrite(binaryReader.ReadBytes(
1024
));
Response.Flush();
}
//
,
if
(i
<
maxCount)
return
false
;
return
true
;
}
catch
{
return
false
;
}
finally
{
//
Response.End();
binaryReader.Close();
fileStream.Close();
}
}
else
{
ScriptManager.RegisterStartupScript(
this
, GetType(),
"
"
,
"
alert(' !')
"
,
true
);
}
return
false
;
}
具体的なコードはもう注釈しました.役に立つことを望んでいます.