- - PR -
PDFファイルのダウンロードで「ファイルを修復できません」エラー
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2004-06-08 19:05
Mickyでございます。
いつもお世話になっております。 WEBアプリにて、いろんな種類のファイルをダウンロードする処理を 作成しているのですが、PDFファイルのみ、 「この文書を開くときエラーが発生しました。ファイルを修復できません」 というエラーが表示されてしまいます。 (Acrobat Readerが起動した後表示されるメッセージです) ダウンロードのダイアログで「保存」を選択して、 ローカル環境に保存した後、開こうとしても同じ現象です。 しかも、なぜかこの保存したファイルは、オリジナルファイルより サイズが増えてしまっているのです。 ダウンロード処理は、たくさんあるサンプルに倣い以下の様に しています。なにか情報をお持ちの方がいらっしゃいましたら、 よろしくお願いします。 VS2003-C#でWebアプリを開発しています。 private void btnGo_Click(object sender, System.EventArgs e) { string FileNameWithPath = @"c:\\\\appa.pdf"; this.Page.Response.ContentType="Application/pdf "; this.Page.Response.AppendHeader("content-disposition","attachment; filename=" + System.Web.HttpUtility.UrlEncode(FileNameWithPath)); this.Page.Response.WriteFile(FileNameWithPath); } 追記: http://www.bea.hi-ho.ne.jp/byoko/bnewslog19.html ↑ここで、似たような現象についての話題があったのですが、 ASP.Netでの現象と結びつくのかイマイチわからないでいます。 | ||||
|
投稿日時: 2004-06-08 20:21
http://homepage3.nifty.com/dotnetfan/web/web12.html
ここで注意書き書いてたりしますが。。。 ダウンロードしたpdfファイルをエディタででも開いてみると、 うまく開ければその最後にaspxから生成されたHTMLが一緒に くっついているのがわかると思います。 きっとそのせいです。 | ||||
|
投稿日時: 2004-06-09 09:16
Mickyです。
お世話になっております。 小野@どっとねっとふぁんさん、書き込みありがとうございました。 実は、この件で調べている時に、小野さんのお名前をあちこちで 拝見していました(^^;
ここの会議室でも、Streamの扱いの話題で、Flush()やEnd()についての 書込みがありましたので、もしや?と思い使用してみたのですが、 エラーになってしまったので、他の原因と思い込んでいました。 すると、当該のプログラムはWebコントロールを継承した 独自のコントロール内部で、ボタンのイベントハンドラを記述しており その中でダウンロード処理をしています。 End()を呼ばなければ問題ないのですが、End()を呼ぶと 「スレッドを中止しようとしました」と言う例外が発生してしまいます。 上記の様な使い方はNGなんですかねぇ? 普通にページに貼り付けたボタンのイベントからは、End()を 加えることで正常に動作しました。 ありがとうございました。継承クラス内でのイベントハンドラに ついては、もう少し調査してみたいと思います。 |
1