天天看點

實作下載下傳的代碼?請指教

 因為現在要用到下載下傳檔案的實作,昨天晚上回去想了一下,那不就是把檔案讀出到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端啊。