• 締切済み

ファイルダウンロードのContent-type

ファイルをアップロード/ダウンロードできるスクリプトを作って運用しています。 2年ほど運用して特に問題なかったのですが、今日、ユーザーからダウンロードできないと問い合わせがきました。 Conten-typeでアプリケーションをしっかりと指定していないことが原因かもしれないと思っているのですが、 どうでしょうか? 言語はPerlです。 アップされたファイルは、ダウンロード時に、頭に以下を付けて送信しています。 エクセルやpdf、ファイルの種類が何になるか分からないため、Content-typeには applicationと記入しています。これが問題でしょうか? ファイル毎に拡張子を見て、Content-typeを書き直すというのが普通なのでしょうか? print "Content-type: application\n"; print "Content-Disposition: attachment; filename=$in{'filename'}\n\n"; 現象 ファイルをダウンロードしようとすると、エラーメッセージを表示 「サーバーが見つからないかDSNエラーです」 ブラウザ:不明 OS:不明 セキュリティー関連ソフトの有無:不明 すみません、ユーザーにもっと詳細を聞くべきだとは思いますが、予めこちらで調べておいてからコンタクトとろうと思っています。

  • Perl
  • 回答数2
  • ありがとう数2

みんなの回答

noname#225520
noname#225520
回答No.2

いままで問題がなかったのですからContent-typeの問題とは考えにくいです。 ユーザー側のプロバイダ?の原因のような気がします。 やはり詳細のヒアリングをお勧めします。

workpad30j
質問者

お礼

お客様に問い合わせたところ、PHSで接続されていたようで、 専用ソフトに通信の圧縮設定ができ、それを外すと問題なく ダウンロードできるようになったそうです。 お騒がせしました。 回答いただき、ありがとうございました。

workpad30j
質問者

補足

書き方が悪くて申し訳ございません。 問題がおきているのは、1人のユーザーだけです。 他のユーザーも、自分のPCでも正常に動作しています。 たしかに自分の文章見直してみると、サーバーが原因のように思えてし まいますね。すみませんでした。

noname#225520
noname#225520
回答No.1

もしかして、「DNSエラー」でしょうか? であればダウンロードファイルのあるサーバーが何らかの原因でトラブっているか、DNSサーバーがダウンしているのかもしれません。 スクリプトの問題ではないと思います。

workpad30j
質問者

補足

回答ありがとうございます。 ご指摘のとおり、DSNではなくDNSです。 同じ場所にあるcgiで、ダウンロードの部分だけが開かないので、回線的な問題ではないはずです。

関連するQ&A

  • ファイルダウンロード時、正常終了しなかった場合にエラー表示させたい

    Perlを使用し、CSVファイルをダウンロードさせるスクリプトを作りました。 データが大きくなると、回線状況などの問題により、データを全てダウンロード しないままダウンロードが完了してしまう時があるようです。 自分の環境では再現できなかったのですが、途中までしかダウンロードできていないにもかかわらず、正常終了したような顔しているそうです。 全てダウンロードできなかった場合に、ユーザーに対して何かエラーを表示させることはできないでしょうか? print"Content-Type: text/csv\n"; print"Content-Disposition: attachment; filename=register.csv\n\n"; foreach (@data){     print"$_\n"; }

    • ベストアンサー
    • Perl
  • CGI経由でのPDFファイルをダウンロード

    こんにちは。 CGIの初心者です。 今CGI経由でのPDFファイルをダウンロードするというプログラムを作っています。 ただ、ダウンロードしたファイルは開けなく、エラーが出ます。ファイルを確認すると0バイトです。原因はよく分からないので、誰かが教えてください。ありがとうございます。 コードです: $filename = './data/sheet.pdf'; $source = $filename ; print qq|Content-type: text/plain\n|; print qq|Content-Disposition: attachment; filename="$filename"\n|; print qq|\n|; #-- ファイルを読み込んで出力 open(FILE,"$source"); binmode FILE; binmode STDOUT; while(read(FILE, $value, 4096)){ print $value; } close FILE;

    • 締切済み
    • CGI
  • CSVファイルのダウンロードについて

    現在開発しているシステムでCSVファイルをダウンロードしたいのですがうまくいきません。どなたか問題の解決できる方お願いします。 現在、CGIでCSVファイルを作成しておきそれをファイルのリンクからダウンロードさせようとしています。 そこで問題になっているのがIEのバージョンが6以前なら普通にダウンロードが出来るのですが、バージョン6だとEXSELがブラウザ内で立ち上がります。 これの回避方法(まずダウンロードをしたいです。)はありませんか? 現在ファイルのヘッダーはこのようにしています。 print "Content-type: application/octet-stream\n" ."Content-Disposition: attachment; filename=aaa.csv\n\n" あと、このCGIプログラムをネスケ、mozillaで開くとソースがブラウザに表示されてしまいます。IEでは問題なく表示されるのにネスケとmozillaはどうしてこんなことが起きるのでしょうか? 少しわかりずらい文章になってしまって申し訳ありません。 どなたかお力を貸してください。お願いします。

    • 締切済み
    • CGI
  • CGI経由PDFダウンロードでエラー

    CGIの知識が全くなく、いろいろなサイトを参考にさせていただいています。 表現等が正しくないことがあるかもしれませんが、ご了承下さい。 htmlのsubmitからcgiを経由してpdfをダウンロードさせるように作成中です。 cgiは、下記Uページを参考にさせていただきました。 http://www.abe-tatsuya.com/web_prog/perl_cgi/content_disposition.php #実際の記述<----------------------------------------------- #-- ダウンロードさせる元ファイル $source = 'doc.pdf'; #-- 保存時のファイル名(デフォルト) $filename = '申込書.pdf'; #-- HTTPヘッダ送信 print qq|Content-type: application/pdf\n|; print qq|Content-Disposition: attachment; filename="$filename"\n|; print qq|\n|; #-- ファイルを読み込んで出力 open(FILE,"$source"); while(<FILE>){print;} close(FILE); #---------------------------------------------------------> 上記の結果、ダウンロードはできるのですが、 Acrobatのエラーで、「この文章を開くときにエラーが発生しました。ファイルが壊れています。修復できませんでした。」 というメッセージが表示されます。 PCを変えてみたりもしましたが、どのPCからダウンロードしても同じです。 ちなみに、ウェブサーバーへアップロードする前のpdfは、ちゃんと開きます。 何が原因なのでしょうか?

    • 締切済み
    • CGI
  • ファイルのダウンロードが出来ない

    こんばんは。お世話になっております。 CSVファイルをダウンロードさせるスクリプトを作成したのですが、そのスクリプト(ファイル)を、さくらインターネットのサーバへアップすると「ダウンロードせずにブラウザに表示されるだけ」という状態になってしまいます。(ローカル上や別サーバでは問題ない) ファイル上に記述する、Headerですが、サイトによっていくつかの記述方法があったので、以下のように2種類のHeaderを試していますが、共に「さくらインターネットだけがダウンロードしない」状況です。 ファイルをダウンロードさせるスクリプトは、今回初めて作ってみたのですが、他にどのような対処法があるのかが分かりません。考えられる可能性だけでも結構ですので、アドバイスいただけると幸いです。 //Header("Content-type:application/x-csv;"); //header("Content-Disposition: inline; filename=$fname.csv"); header("Content-Type: application/octet-stream;"); header("Content-Disposition: attachment; filename=$fname.csv"); 以上、お忙しい中恐縮ですが宜しくお願いいたします。

    • ベストアンサー
    • PHP
  • はじめまして

    はじめまして 現在、PerlのMVCフレームワークCatalystのperlソースコード内で ボタンを押すと、ユーザーにとあるファイルをダウンロードさせたい と考え、以下のように実装しました my $filedir = '/var/www/html/Catal/lib/Catal/Controller/'; my $filename = 'test.zip'; my $filepath = $filedir . $filename; print "Content-type:application/download; name=\"$filename\"\n"; print "Content-Disposition: attachment; filename=\"hogehoge\"\n\n"; open(FILE,"< $filepath"); binmode FILE; binmode STDOUT; print while(<FILE>); close(FILE); 上記コードを動かすとIEのページにZIPファイルがバイナリ表示されるだけで ダウンロードダイアログすら出ません。 どうしたら、ダイアログを表示させ、ユーザーが望む場所にダウンロード させることができるでしょうか。 よろしくお願いします。

  • fileのダウンロードとページ移動を続けて行うには?

    初心者です。教えて頂けますか? フォームのボタンを押したらダウンロードする様に作りました。 ボタンを押したらダウンロードとページ移動を続けて行うには どの様にすれば良いでしょうか? header( "Content-Type: application/octet-stream" ); header( "Content-Disposition: attachment; filename=$contentFilePath" ); header( 'Content-Length: '.filesize($contentFilePath) ); readfile($contentFilePath);

    • ベストアンサー
    • PHP
  • PHP→DB→CSV 「ダウンロードできません」

    DBの内容をPHPを使ってCSVに変換してダウンロードするプログラムを使っています。 プログラム(csv.php)の先頭に header("Content-Type: application/octet-stream"); header("Content-Disposition: attachment; filename=output.txt"); header ("Content-Description: File Transfer"); を書いているのですが、いざダウンロードをする画面になるとoutput.csvでなくcsv.phpをダウンロードすることになってしまいダウンロードができません。 表示だけならばっちりでているのですが、、、ファイルタイプがHTMLとなっているのも意味不明です。 だれか助けてください(><

    • ベストアンサー
    • PHP
  • PHPでのファイルダウンロードについて

    初めて質問させていただきます。 社内用でファイルのアップロード・ダウンロードができるシステムを開発しています。 PCからは問題なくアップロードもダウンロードも行えていたのですが、 スマホからアクセスしてダウンロードをすると失敗してしまいます。 下記のコードを使ってます。 ファイルの種類はいろいろなので、「application/octet-stream」にしてます。 が、それぞれのファイルタイプに合わせて変更させても状況は変わりませんでした。 -- header('Content-Type: application/octet-stream'); header('Content-Disposition: attachment; filename="'.$file_name.'"'); header('Content-Length: '.filesize($dl_file)); readfile($dl_file); exit; -- なにか解決策があるようでしたら、教えていただけないでしょうか。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • 複数ファイルのダウンロード

    PHPで複数のログファイルをダウンロードしたいときはどのようにしたらよいのでしょうか? ログファイルは下記のような形式です。 test_20041001,test_20041002,・・・,test_2004_1031 以前までは、DBから取得したデータをタブ区切りで表示したものを .xlsファイルでダウンロードしていました。 そのときのやり方としては、 //---------------------------------- //ファイルダウンロード //---------------------------------- $fSize = $Sec->getFileSize(ADMIN_RESERVECSV_PATH); header("Content-Type: application/octet-stream"); header("Content-Disposition: attachment; filename=" . PATH); header("Content-Length: " . $fSize['B']); readfile(PATH); というような方法です。

    • 締切済み
    • PHP

専門家に質問してみよう