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

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

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

Re[2]: ファイルダウンロード時のエラー


(過去ログ 59 を表示中)

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

■33577 / inTopicNo.1)  ファイルダウンロード時のエラー
  
□投稿者/ .net初心者 (1回)-(2009/03/04(Wed) 21:42:33)

分類:[.NET 全般] 

ファイルダウンロードの開発部分で、いろいろ調べてやってみましたが、
どうしてもエラーが発生し、かつダウンロードができないファイルがあります。
原因等お分かりになるようでしたら、ご教授ください。
環境:VS2005
.netFremework2.0

以下、問題の部分です。
このエラーは必ず発生しますが、ファイルによってはそのままダウンロードできてしまう場合もあります。
ダウンロード可 環境設定シート.xls 29KB
      不可 テスト用ファイル.txt 5KB

if (reader.Read())
{
// ファイルのパス取得←パス取得確認済み
string downloadPath = (string)reader["FILEPATH"];
Response.Clear();

Response.HeaderEncoding = System.Text.Encoding.GetEncoding("shift-jis");
Response.ContentType = "application/octet-stream"
// 各値の取得確認済み
string sfileName = fileName + "." + fileExt;
Response.AddHeader("Content-Disposition", " attachment;filename=" + HttpUtility.UrlEncode(sfileName));

FileInfo oDLfile = new FileInfo(downloadPath);
Response.Flush();
Response.WriteFile(oDLfile.FullName);
  Response.Close();
↓ここでエラー発生
Response.End();
}
エラー内容:コードが最適化されているか、またはネイティブ フレームが呼び出し履歴の最初にあるため、式を評価できません


引用返信 編集キー/
■33597 / inTopicNo.2)  Re[1]: ファイルダウンロード時のエラー
□投稿者/ biac (65回)-(2009/03/05(Thu) 11:21:15)
biac さんの Web サイト
> ↓ここでエラー発生
> Response.End();

HttpResponse.End() メソッドを呼び出すと例外が出るのは、仕様です。
http://msdn.microsoft.com/ja-jp/library/system.web.httpresponse.end(VS.80).aspx#ctl00_rs1_mainContentContainer_cpe4576_h


> ダウンロード可 環境設定シート.xls 29KB
>       不可 テスト用ファイル.txt 5KB

> Response.ContentType = "application/octet-stream"

octet-stream だと言われて、 だけどファイルの拡張子は .txt でお願いされると、 IE あたりは嫌がりそうですね。

それと。
ダウンロードさせるファイル名に日本語を使うと、 (ブラウザを限定しない限り) 必ず文字化け問題が出ます。
http://social.msdn.microsoft.com/forums/ja-JP/vbgeneralja/thread/df29aa82-e400-4e7c-aa47-9c65b222f3f2/

引用返信 編集キー/
■33603 / inTopicNo.3)  Re[2]: ファイルダウンロード時のエラー
□投稿者/ aetos (113回)-(2009/03/05(Thu) 13:07:39)
aetos さんの Web サイト
リンクしときますね。
http://rararahp.cool.ne.jp/cgi-bin/lng/dotnet/dotnetlng.cgi?print+200903/09030004.txt

引用返信 編集キー/
■33613 / inTopicNo.4)  Re[2]: ファイルダウンロード時のエラー
□投稿者/ .net初心者 (3回)-(2009/03/05(Thu) 14:11:26)
2009/03/05(Thu) 15:17:50 編集(投稿者)
2009/03/05(Thu) 14:37:51 編集(投稿者)
2009/03/05(Thu) 14:37:34 編集(投稿者)

書き込みありがとうございます。
> HttpResponse.End() メソッドを呼び出すと例外が出るのは、仕様です。
> http://msdn.microsoft.com/ja-jp/library/system.web.httpresponse.end(VS.80).aspx#ctl00_rs1_mainContentContainer_cpe4576_h

仕様だったんですね。libraryを確認した際気づきませんでした。


> それと。
> ダウンロードさせるファイル名に日本語を使うと、 (ブラウザを限定しない限り) 必ず文字化け問題が出ます。
> http://social.msdn.microsoft.com/forums/ja-JP/vbgeneralja/thread/df29aa82-e400-4e7c-aa47-9c65b222f3f2/

URL参考にさせていただきます。
firefoxでは見事に文字化けしました。


>>ダウンロード可 環境設定シート.xls 29KB
>>      不可 テスト用ファイル.txt 5KB
>
>> Response.ContentType = "application/octet-stream"
>
> octet-stream だと言われて、 だけどファイルの拡張子は .txt でお願いされると、 IE あたりは嫌がりそうですね。

ご指摘どおりIEではなくfirefoxではダウンロードできました。
そこで、
ContentType = "text/plain"で試してみましたが、同じ状況でした。
ダウンロードできない状況をもう少し詳しく説明します。
【通常】「ファイルのダウンロード」ダイアログで[保存]ボタン押下、「名前をつけて保存」ダイアログが表示され[保存]ボタンを押下すると、
ダウンロードの進行状況が表示されるダイアログが表示され、無事終了。
【出来ない場合】「ファイルのダウンロード」ダイアログで[保存]ボタン押下、ダウンロードの進行状況が表示されるダイアログが表示され、
        なにも起きないままの状態。

[追記]
【出来ない場合】ですが、デバックで途中の処理でブレークポイントを使いいったん停止し、
window.openでの画面を一度表示すると正常にダウンロードできました。
この処理はwindow.openで表示した画面のロード時に処理しています。

なにか原因等おわかりになるようでしたら、教えてください。
よろしくお願いします。
引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -