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

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

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

Re[2]: ASP.NETでのZIPファイルのダウンロード機能


(過去ログ 47 を表示中)

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■25284 / inTopicNo.1)  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でも、サーバーでもアクセスが出来ることは確認してあります。

引用返信 編集キー/
■25286 / inTopicNo.2)  Re[1]: ASP.NETでのZIPファイルのダウンロード機能
□投稿者/ Jitta (510回)-(2008/09/17(Wed) 12:26:57)
No25284 (開発者駆け出し さん) に返信

> サーバー:Windows2003Server

> ですが、ローカルにアクセスしたり、サーバーにプログラムを入れてアクセスするとサイズが0バイトになり、解凍しようとしてもできません。
> 何か特別な設定が必要なのでしょうか?
> 色々なサイトを参考にしながら作った為、見苦しい点や、必要のないコードがあるかもしれませんが、
> その辺のアドバイスや、参考になるサイトを教えていただけると助かります。
>
> ダウンロードしたいZIPファイルは、サーバーとは別のPCに入っていて、
> デバックで使っているPCでも、サーバーでもアクセスが出来ることは確認してあります。

 プロセスが実行されているアカウントの問題です。
Windows Server 2003 って、どのアカウントだっけ?ローカル アカウントを調べて、ASP.NET を実行しているアカウントがアクセスできるようにしてあげてください。

くれぐれも、e*******e - f**l a****s にだけは、してはいけません。
ダメですよ。絶対にダメですからね!!
引用返信 編集キー/
■25310 / inTopicNo.3)  Re[2]: ASP.NETでのZIPファイルのダウンロード機能
□投稿者/ 開発者駆け出し (32回)-(2008/09/17(Wed) 14:37:56)
No25286 (Jitta さん) に返信

Jitta様早速のご返信ありがとうございます。

私なりに色々考えて変更してみたのですが、まだサイズが0バイトのままです。
今、Webアプリの認証ではWeb.configで
         <!--アイデンティティ アイデンティティを指定して、偽装を有効にします。-->
        <identity impersonate="true" userName="User" password="UserPass" />
と指定しています。ダウンロードをしたいファイルのパスを
"\\123.456.78.9\Data\DL.zip"とすると、
DataフォルダにサーバーPCのUserName="User"のアクセスを許可するように設定するのでしょうか?
それともIISで仮想ディレクトリーの作成で、"\\123.456.78.9\Data"を参照するようにし、そこでの
接続時のIDとパスワードに指定するのでしょうか?(わかりずらい説明ですかね・・・)

あと、申し訳ないのですが
> くれぐれも、e*******e - f**l a****s にだけは、してはいけません。
> ダメですよ。絶対にダメですからね!!
この設定ってなんなのかも教えてもらえませんか?

> ■No25284 (開発者駆け出し さん) に返信
> 
>>サーバー:Windows2003Server
> 
>>ですが、ローカルにアクセスしたり、サーバーにプログラムを入れてアクセスするとサイズが0バイトになり、解凍しようとしてもできません。
>>何か特別な設定が必要なのでしょうか?
>>色々なサイトを参考にしながら作った為、見苦しい点や、必要のないコードがあるかもしれませんが、
>>その辺のアドバイスや、参考になるサイトを教えていただけると助かります。
>>
>>ダウンロードしたいZIPファイルは、サーバーとは別のPCに入っていて、
>>デバックで使っているPCでも、サーバーでもアクセスが出来ることは確認してあります。
> 
>  プロセスが実行されているアカウントの問題です。
> Windows Server 2003 って、どのアカウントだっけ?ローカル アカウントを調べて、ASP.NET を実行しているアカウントがアクセスできるようにしてあげてください。
> 
> くれぐれも、e*******e - f**l a****s にだけは、してはいけません。
> ダメですよ。絶対にダメですからね!!


引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -