• ベストアンサー
  • 困ってます

ダウンロードが機能しない。

html,php共に初心者です。教えて頂けますか? ダウンロードボタンを押すと、以下のphpファイルを開きダウンロードを行う様にしたのですが、mac safari ではダウンロード出来たのですが、 windows IE では ダウンロード出来ませんでした。 ファイルの構成は以下です。 /www/category/contentsList.php <-ダウンロードボタンがあります /www/category/downloader.php <-ダウンロードボタンを押すと呼ばれます。 /contentDirectory/ダウンロードするファイル.zip downloader.phpの記述は以下のみです。 <?php $serverDirectory = dirname($_SERVER['DOCUMENT_ROOT']); $contentDirectory = $_POST['contentDirectory']; $fileName = $_POST['fileName']; $filePath = $serverDirectory.'/'.$contentDirectory.'/'.$fileName; header('Content-Type: application/octet-stream'); header('Content-Disposition: attachment; filename="'.$fileName.'"'); header('Content-Length: '.filesize($filePath)); readfile($filePath); ?> どうすれば良いでしょうか? 大変申し訳ありません。よろしくお願いします。

共感・応援の気持ちを伝えよう!

  • 回答数2
  • 閲覧数68
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
  • 回答No.1
noname#119957

やったことはないんですが、DNSエラー(名前解決エラー)ではないでしょうか? $filenameをhttp://からに指定すればなおるかもしれないと思うんですが。。ちがうかな?

共感・感謝の気持ちを伝えよう!

質問者からのお礼

ありがとうございます。 https://だった為駄目なようでした。 http://に変更したら出来ました。 mac safari だと、https://でも出来るのですね。

関連するQ&A

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

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

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

    はじめまして、PHPについて質問させていただきます。 PHPでファイルを複数ダウンロードできるようしたいと思っています。 色々調べ、header関数を使用し、以下のように記述すると ファイルのダウンロードは成功しました。 /*****************************************/ // ダウンロードさせる元ファイル(絶対パス) $filepath = 'test_01.pdf'; // 保存時のファイル名(デフォルト) $filename = 'download001.pdf'; // HTTPヘッダ送信 header("Content-length: " . filesize($filepath)); header("Content-type: application/pdf"); header("Content-Disposition: attachment; filename=\"{$filename}\""); // ファイルを読み込んで出力 readfile($filepath); /*****************************************/ 一つのファイルのダウンロードに成功したので、 次に複数のファイルを順番にダウンロードをさせる為にループ処理をしました。 /*****************************************/ //配列 複数ファイル $downfile = array("test_01","test_02","test_03"); //データ数 $max = count($downfile); // ダウンロードさせるディレクトリ(絶対パス) $filepath = "/home/sites/www.eshop-himawari.com/web/test_nihon/form_down/file/"; // 保存時のファイル名(デフォルト) $filename = "download"; $filetype = ".pdf"; $kazu = 1; //ループ処理 for( $i = 0; $i < count( $max ); $i++ ){ $downpath = $filepath.$downfile[$i].$filetype; $filename = $filename.$kazu.$filetype; $kazu = $kazu++; // HTTPヘッダ送信 header("Content-length: " . filesize($downpath)); header("Content-type: application/pdf"); header("Content-Disposition: attachment; filename=\"{$filename}\""); // ファイルを読み込んで出力 readfile($downpath); // $fp = fopen( "$downpath", "rb" ); // @fpassthru( $fp ); } /*****************************************/ しかし実行すると最初のファイルはダウンロードしますが 2つ目からのファイルはダウンロードされませんでした。 きちんとループ処理をされて、2つ目以降のファイルをダウンロード するには、どうすればいいのでしょうか?

    • 締切済み
    • PHP
  • PHP CSV 出力

    失礼します。 現在PHPで指定したパスに置いてあるCSVを出力したいのですが、 CSVは出力できているのですが、HTMLが先頭に入ってしまいます。 htmlファイルに設置したボタンに対して phpファイルで処理をしています。 どこかおかしい部分があればご教授頂きたいです。 HTMLファイル <?php $self = $_SERVER["SCRIPT_NAME"]; ?> <form method='POST' action='<?php $self ?>'> <input type='submit' value='CSV出力' name='get_csv'> </form> PHPファイル function This_Month(){ $filepath = 'hoge.csv'; //ダウンロードしたいファイルパス $filename = 'test.csv'; //ダウンロードした際のファイル名 if(!file_exists($filepath)){ die("Error:File(".$filepath.") does not exist"); } //オープンできるか確認 if(!($fp = fopen($filepath,"r"))) { die("Error:Cannot open the file(".$filepath.")"); } fclose($fp); //ファイルサイズの確認 if(($content_length = filesize($filepath)) == 0){ die("Error:File size is 0.(".$filepath.")"); } //ファイルの処理方法 header('Content-Disposition: attachement; filename="'.$filename.'"'); //ファイルタイプ指定 header('Content-Type: application/octet-stream'); header('Content-Transfer-Encoding:binary'); //ファイルサイズ header('Content-Length: '.filesize($filepath)); mb_convert_encoding($filepath,'utf-8','shift-jis'); readfile($filepath); exit(); } //ボタンに合わせて条件を変えていく if(isset($_POST["get_csv"])){ //ユーザーから来たデータをエスケープする $csv_output = htmlspecialchars($_POST["get_csv"], ENT_QUOTES, "UTF-8"); switch ($csv_output) { case "CSV出力": ”This_Month();  break; default: echo "エラー"; exit; } }

    • ベストアンサー
    • PHP

その他の回答 (1)

  • 回答No.2
noname#119957

httpsでSSL(暗号化)を使っているなら、IEでSSLが無効ならば有効にしてみられては? また、当方はSSLであるということは知りませんでした、ファイル名(./aaa/...)をURL(http://)に変更をという意味でした。

共感・感謝の気持ちを伝えよう!

関連するQ&A

  • PHPによるファイルのダウンロード

    初めまして最近ちょっとはまってしまっているので分る方がいましたらアドバイスお願いします。 PHPのheader関数を使ってブラウザのダイアログを表示させるファイルのダウンロードを実装した際に、ファイルサイズが大きいものをダウンロードしているとダウンロードが完了するまで他のアクセスが応答しなくなる場合があります。 基本的には $fp = fopen($filePath, "rb"); $contents = fread($fp, filesize($filePath)); fclose($fp); $len = strlen($contents); header("Content-type: application/octet-stream"); header('Content-disposition: inline; filename="' . $filename . '"'); header("Content-length: " . $len); echo $contents; というような一般的な書き方をしています。 ファイルのサイズ的には10MB前後です。 同じような現象を解決された方がいましたらアドバイス頂けると幸いです。

    • 締切済み
    • PHP
  • 画像をダウンロードさせたい。

    いろいろなファイルがサーバーにあがっているとして、 その一覧が<a href="">ファイル名</a>で表示されているとします。 ファイル名を押下した時にダウンロードさせたいと思っています。 -------------------------------------------------- header("Content-Disposition: inline; filename=".$fileDlName); header("Content-Length: ".$fileDlSize); header("Content-Type: application/octet-stream"); readfile($filePath) ------------------------------------------------- ↑でCSV,PDF,ZIPファイルなどはダウンロードできるようになりました。 が、JPEG,GIF,PNGなどはブラウザに表示されてしまい ダウンロードできません。 画像も強制でダウンロードさせたいのですがよい方法はありますか?? ブラウザ:IE7 PHP:5.2.3 Apache:2.0.59 以上、よろしくお願いいたしますm(_ _)m

    • ベストアンサー
    • PHP
  • ダウンロードさせると*.phpにリネームされてしまう。

    phpでファイルのダウンローダを作成したのですが、IEで動かすと*.phpと動作しているphpのスクリプトネームにリネームされてしまいます。 FireFoxではリネームされる事無くダウンロードされるのですが、IEでの解決方法をご存知の方、どうぞご教授くださいませ。 コードは $filesize=filesize($filedldir); header ("Accept-Ranges: none"); header ("Content-Length: $filesize"); header ("Content-Type: application/octet-stream"); header ("Content-Disposition: attachment; filename=$fnames"); readfile ($filedldir); exit; といった感じです。 何がおかしいのでしょうか?

    • ベストアンサー
    • PHP
  • PDF ダウンロード

    お世話になってます。 PHPからのPDFダウンロードで以下の様な現象が起きておりまして、 助言を頂きたいと思います。 管理者ページからPDFを添付してお知らせを入力し、 一般ユーザはお知らせを見たりPDFをダウンロードしたりする機能があります。 開発機では、まったく問題なくアップロード・ダウンロードができるのですが、 顧客環境では正常にアップロードができていることは確認ができますが、 Windows環境でダウンロードし、Acrobat Readerで確認するとPDFが壊れているという現象が起きています。 (実際にサーバーにアップロードされたファイルを確認しておりますのでアップロードは正常です。) またそれは、全てのPDFファイルではなく1部のファイルにそのような現象が起きていて さらには、MacOS 及び iPhoneから接続しダウンロードを行い閲覧するには問題はありません。 おそらくサーバー側のApacheのどこかに何か設定があるのかと思いますが検討がつきません。 環境は、CentOS5.9 + Apache 2.2.3 PHPのコードは、以下の通りです。 header("Cache-Control: public"); header("Pragma: public"); header("Content-Type: application/octet-stream; charset=UTF8"); header('Content-Disposition: attachment; filename="'. $file_name .'"'); header('Content-Length: ' . filesize($filepath)); readfile($filepath); 以上、どなたかお分かりのかたいらっしゃいましたら助言を頂けますでしょうか。 よろしくお願い致します。

    • ベストアンサー
    • 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でcsvダウンロードできない

    phpで配列をCSV にしてボタンを押すとブラウザからダウンロードさせたいのですが、 htmlタグで表示した後に、ボタンを押すとブラウザからダウンロードさせるには、以下の ヘッダーをhtmlタグより下につけると、機能しなくなってダウンロードできなくなって しまっています。 どうしたらいいのでしょうか。 header('Content-Type:application/octet-stream'); header('Content-Disposition:attachment;filename=data.csv');

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

    現在ログをダウンロードするプログラムを作成しています。 ログを1つのファイルとしてあつかうため、 それぞれのログを ftp_fget関数で1つのファイルにまとめました。 ここまではうまくいってるのですが、容量が大きいため 圧縮せざるをえないと重い。 system('/usr/local/bin/zip '.$fileName.'.zip '.$fileName); 上記のシステムコマンドでファイルを圧縮しました。 15MBのファイルが2MBまで落ちましたが、 これをダウンロードしようとするとうまくいきません。 ダウンロードのやり方は下記のようなやり方です。 header("Content-Type: application/octet-stream"); header("Content-Disposition: attachment; filename=" . $all_data['fileName']); header("Content-Length: " . $fSize['B']); readfile($all_data['fileName']); このような方法でダウンロードしようとすると、何故か688バイト分くらいしかとってきてくれません。 何か原因があるのでしょうか? どなたかご教授お願いいたします。

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

    お世話になります。 タイトルのとおりPHPでファイルのダウンロードを行いたいのですが、 ファイルを保存するというダイアログが出てくれません。 tesuto.php <?php $file="/work/tesuto.csv"; header ("Content-Disposition: attachment; filename=$file"); header ("Content-type: application/x-csv"); readfile ($file); ?> tesuto.phpを実行するとダウンロードされずに、ファイルの中身が表示されてしまいます。 よろしくお願いします。

    • ベストアンサー
    • 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
  • IE6でダウンロードさせたい【PHP】

    IE6でダウンロードさせたい【PHP】 現在、PHPからのヘッダ出力を使って ファイルダウンロードさせるプログラムを作成しています。 (PHPスクリプトが呼ばれると、 ダウンロードダイアログが出現する) FireFoxでは問題なく動作するのですが、 IE6だと動作しません。(ダイアログが出ない) ※ちなみに、SSLは使ってません。 --↓ソース------------------- header("Content-Disposition: inline; filename=\"".basename($path_file)."\""); header("Content-Length: ".$content_length); header("Content-Type: application/octet-stream"); readfile($path_file) ---------------------------------- -IE6のHTTPヘッダ(デバッガで抽出)-- HTTP/1.1 200 OK Date: Thu, 20 May 2010 07:35:19 GMT Server: Apache/2.2.11 (Win32) DAV/2 mod_ssl/2.2.11 OpenSSL/0.9.8i PHP/5.2.9 X-Powered-By: PHP/5.2.9 Expires: Thu, 19 Nov 1981 08:52:00 GMT Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0 Pragma: no-cache Content-Disposition: inline; filename="20100520_133719_irai_1.txt" Content-Length: 2415 Keep-Alive: timeout=5, max=100 Connection: Keep-Alive Content-Type: application/octet-stream ---------------------------------- どなたか解決策に心当たりのある方、ご教授宜しくお願いします!

    • ベストアンサー
    • PHP