C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


(過去ログ 47 を表示中)
■25284 / )  ASP.NETでのZIPファイルのダウンロード機能
□投稿者/ 開発者駆け出し (31回)-(2008/09/17(Wed) 12:16:29)

分類:[ASP.NET (VB)] 

お世話になります。
タイトルの通りなのですが、ASP.NETでZIPファイルのダウンロード機能が機能しません。
環境
OS:XPProSP2
ソフト:Microsoft Visual Web Developer 2008 Express Edition
サーバー:Windows2003Server
以下コードです

        Dim FileName As String
        Dim FilePath As String
        Dim DispFileEnc As String
        Dim MyFileStream As IO.FileStream
        Dim FileSize As Long
        Dim Buffer() As Byte

        FileName = "ダウンロードファイル.ZIP"
        FilePath = String.Format("\\123.456.78.9\Data\{0}", FileName)
        If (IO.File.Exists(FilePath) = False) Then
            ErrorMsgSec("ファイルが存在しません")
        Else
            ErrorMsgSec(String.Empty)
            Response.Clear()
            ' ファイルストリームのインスタンスを設定
            MyFileStream = New IO.FileStream(FilePath, IO.FileMode.Open)
            ' DLするファイルのサイズを取得
            FileSize = MyFileStream.Length
            ' ファイルサイズ分配列を準備
            ReDim Buffer(CInt(FileSize))
            ' ファイルを読み込み、配列にデータを格納
            MyFileStream.Read(Buffer, 0, CInt(FileSize))
            MyFileStream.Close()
            Try
                ' ファイル名の文字化けを防止
                DispFileEnc = HttpUtility.UrlEncode(FileName)
                Response.ContentType = "application/octet-stream"
                Response.AppendHeader("Accept-Ranges", "bytes")
                Response.AppendHeader("Content-Disposition", String.Format("attachment; filename= {0}", DispFileEnc))
                Response.AppendHeader("Content-length", DispFileEnc)
                Response.Flush()
                Response.Write("<b>File Contents: </b>")
                Response.BinaryWrite(Buffer)
                Response.End()
            Catch ex As Exception
            Finally
                If Not (IsNothing(MyFileStream)) Then
                    MyFileStream.Dispose()
                    MyFileStream = Nothing
                End If
                If Not (IsNothing(Buffer)) Then
                    Buffer = Nothing
                End If
            End Try
        End If
上記のコードで、デバックでは正常にダウンロードでき、ファイルを解凍すると解凍されたファイルがあり、見ることも出来ます。
ですが、ローカルにアクセスしたり、サーバーにプログラムを入れてアクセスするとサイズが0バイトになり、解凍しようとしてもできません。
何か特別な設定が必要なのでしょうか?
色々なサイトを参考にしながら作った為、見苦しい点や、必要のないコードがあるかもしれませんが、
その辺のアドバイスや、参考になるサイトを教えていただけると助かります。

ダウンロードしたいZIPファイルは、サーバーとは別のPCに入っていて、
デバックで使っているPCでも、サーバーでもアクセスが出来ることは確認してあります。

返信 編集キー/


管理者用

- Child Tree -