|
分類:[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でも、サーバーでもアクセスが出来ることは確認してあります。
|