因為現在要用到下載下傳檔案的實作,昨天晚上回去想了一下,那不就是把檔案讀出到IO流中,然後再從流中寫入另外一個檔案嗎?
/// <summary>
/// 下載下傳檔案
/// </summary>
private void Down()
{
System.IO.Stream stream = null;
FileStream fs=null;
byte[] buffer = new byte[10000];
int length = 0; //檔案長度
long dataToRead; //将要讀取的資料
string filepath = @"D:/GJUN/項目/資料表.doc";
string filename = System.IO.Path.GetFileName(filepath);
try
{
stream = new FileStream(filepath, FileMode.Open, FileAccess.Read, FileShare.Read);
fs = new FileStream(Server.MapPath("down.doc"), FileMode.Create);
dataToRead = stream.Length;
Response.ContentType = "application/octet-stream";
Response.AddHeader("Content-Discription", "attachment filename=" + filename);
//讀取檔案
while (dataToRead > 0)
{
if (Response.IsClientConnected)
{
length = stream.Read(buffer, 0, 10000);
//将資料寫到目前輸出流
//Response.OutputStream.Write(buffer, 0, length);
fs.Write(buffer, 0, length);
fs.Flush();
//Response.Flush();
buffer = new byte[10000];
dataToRead = dataToRead - length;
}
else
{
dataToRead = -1;
}
}
}
catch (Exception ex)
{
Response.Write("Error :" + ex.Message);
}
finally
{
if (stream != null)
{
stream.Close();
fs.Close();
fs.Dispose();
stream.Dispose();
}
}
于是調試了一下就可以實作了,狂喜!
關機----準備看一下電視。剛一站起來,突然發覺被電腦騙了,更加被我自己給騙了。就站在那裡想了N分鐘,越想越不對噢!那并沒有實作到下載下傳啊,隻是把一個檔案COPY到了另外一個地方,而且換了個名字而已。那并不是真的從SERVER端下載下傳檔案到了CLIENT端啊。