- - PR -
LZHファイルだけダウンロードできない。
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2005-06-01 19:17
はじめまして。 ASP.NETの初心者ですよろしくお願いします。
以下のコードで各ファイルのダウンロード機能を実現しようとしていますが LZHファイルだけFileStreamの部分でエラーとなりダウンロードできません。 いろいろ調べましたが分かりませんでした。 どなたか良い知恵がありましたらお教え下さい。 ---------------コードの始まり----------------------- Try Response.Buffer = True Response.Clear() If InStr(Request.ServerVariables("HTTP_USER_AGENT"), " MSIE 5.5;") > 0 Then '--- IE 5.5 の場合の回避策 Response.ContentType = "application/octet-stream-dummy" Else '--- その他のブラウザ sSuffix = "" n = InStrRev(m_sFilePath, ".") If n > 0 Then sSuffix = Mid(m_sFilePath, n).ToUpper End If Try MyFileStream = New FileStream(m_sFilePath, FileMode.Open, FileAccess.Read) FileSize = MyFileStream.Length Catch eSys As Exception Dim sErr As String = "ファイル読み込みエラー" Throw New ApplicationException(sErr, eSys) Return False Finally If Not MyFileStream Is Nothing Then MyFileStream.Close() End Try Select Case sSuffix Case ".XLS" 'ダウンロードできる Response.ContentType = "application/vnd.ms-excel" Exit Select Case ".CSV" 'ダウンロードできる Response.ContentType = "application/csv" Exit Select Case ".TXT" 'ダウンロードできる Response.ContentType = "txt/plain" Exit Select Case ".PPT" 'ダウンロードできる Response.ContentType = "application/vnd.ms-powerpoint" Exit Select Case ".DOC" 'ダウンロードできる Response.ContentType = "application/vnd.msword" Exit Select Case ".XML" 'ダウンロードできる Response.ContentType = "application/xml" Exit Select Case ".PDF" 'ダウンロードできる Response.ContentType = "application/pdf" Exit Select Case ".LZH" 'ダウンロードできない★ Response.ContentType = "application/octet-stream" Exit Select Case ".ZIP" 'ダウンロードできる Response.ContentType = "application/zip" Exit Select End Select End If Response.AddHeader("Content-Disposition", "Attachment; filename=" & HttpUtility.UrlEncode(m_sFileName)) Response.AddHeader("Content-Length", FileSize) Response.WriteFile(m_sFilePath) Response.Flush() Response.Close() Catch eSys As Exception Dim sErr As String = "Web出力エラー" Response.StatusCode = 404 Throw New ApplicationException(sErr, eSys) Return False End Try ---------------コードの終わり----------------------- | ||||
|
投稿日時: 2005-06-01 21:22
どんなエラーになりますか、エラー(例外)の種類、せっかく受けているのだからMessageの内容を書いてください。それが一番重要な情報です。 『色々調べた』ことを、具体的に挙げてください。すでに調べたことを指摘されても困りますよね?書いてなければ「していない」と判断されます。 _________________ | ||||
|
投稿日時: 2005-06-02 10:26
>どんなエラーになりますか、エラー(例外)の種類、せっかく受けているのだからMessageの
>内容を書いてください。それが一番重要な情報です。 未処理の実行エラー パス "C:\〜\〜\TestData\test.lzh" へのアクセスが拒否されました。 のエラーとなります。 ダウンロードできるXLS,CSV,TXT,PPT,DOC,XML,PDF,ZIPのダウンロードファイルと 同一のディレクトリにLZHファイルは存在しております。 | ||||
|
投稿日時: 2005-06-02 10:40
いしさん
そのエラーの通り、"ファイルに"アクセス権がないのではないでしょうか。 プロパティのアクセス権をダウンロード可能な他のファイルと比較してみて下さい。 蛇足ですが、LZHファイルはどの様にして"C:\\〜\\〜\\TestData"フォルダに配置していますか? VB6での話ですが、Unlha.dllを使用して直接ダウンロード用フォルダにLZHファイルを作成すると、アクセス権がEveryOneだけになったことがあります。 そのときは、[テンポラリフォルダでファイル作成]→[ダウンロード用フォルダへコピー]の手順で正常にアクセス権を付与することができました。 | ||||
|
投稿日時: 2005-06-02 10:43
どもです。がると申します。
んっと。デバッグの基本は「絞込み」です。 「どこでバグが起きたか」をぎりぎりまで絞り込むと、その後がとても 楽になります。 んで。
から推測するに。まずはファイルのopen周りと、ファイルのread周り。 あとは「どこで例外が発生しているかを行レベルで正確に把握」できるように 工夫してみましょう。 そうすれば、もう少し状況がはっきりするかとは思います。 この手法は今回に限らずデバッグの基礎になるので、初めはちょっと 大変だと思いますが、がんばってください。 | ||||
|
投稿日時: 2005-06-02 12:31
でっち6号さん
>プロパティのアクセス権をダウンロード可能な他のファイルと比較してみて下さい。 他のファイルは全てアクセス権がEveryOneでした。 またLZHファイルのアクセス権はAdministrators,ログインユーザ,SYSTEMになって いました。 ここで、LZHファイルのアクセスをEveryOneと変更したところ ファイルのダイアログボックスが表示されました。 Jittaさん でっち6号さん がるがるさん ありがとうございました。 |
1