連続ダウンロードのエラー

このQ&Aのポイント
  • pdfファイルの連続ダウンロード時にエラーが発生しています。複数ファイルをチェックボックスで指定してダウンロードする仕組みですが、すべてのファイルがダウンロードできません。ダウンロード用のファイルの書き方や選択方法に問題がある可能性があります。
  • JavaScriptでチェックボックスの選択状態を認識し、それに応じてファイルをダウンロードする仕組みを作成しています。しかし、2つ以上のファイルを選択した場合に正常にダウンロードされない現象が発生しています。同じチェックボックスを複数回選択した場合にも、毎回ダウンロードされないファイルが異なるという問題も発生します。
  • 問題の原因は特定できていませんが、連続ダウンロードの制限に関連している可能性があります。ダウンロードできるファイルのサイズや同時にダウンロードできるファイル数に制限があることが考えられます。原因を特定するために、ダウンロードの制限に関する情報を確認してみることをおすすめします。
回答を見る
  • ベストアンサー

連続ダウンロードのエラー

pdfファイルの連続ダウンロードを作っています。 複数ファイルをチェックボックスで指定して 指定した数のファイルをダウンロードさせるようにしているのですが 全部のファイルがダウンロードできません。 複数ファイルの選択 download.html チェックボックスでファイルの複数選択 それをJavaScriptでオンになっていたらダウンロードさせる。 window.open で呼び出す先は <iframe> ============================= <script language="JavaScript"> <!-- function down() { if (document.f1.file001.checked == true) { newwin = window.open("1.php","my1"); } if (document.f1.file002.checked == true) { newwin = window.open("2.php","my2"); } if (document.f1.file003.checked == true) { newwin = window.open("3.php","my3"); } if (document.f1.file004.checked == true) { newwin = window.open("4.php","my4"); } if (document.f1.file005.checked == true) { newwin = window.open("5.php","my5"); } } //--> </script> 中略 <form name="f1"> <input type="checkbox" value="on" name="file001"> <input type="checkbox" value="on" name="file002"> <input type="checkbox" value="on" name="file003"> <input type="checkbox" value="on" name="file004"> <input type="checkbox" value="on" name="file005"> <input type="button" value="ダウンロード" onclick="down()"> </form> 中略 <iframe src="index.html" name="my1" width="5" height="3" style="width:1px;height:1px;visibility:hidden;"> <iframe src="index.html" name="my2" width="5" height="3" style="width:1px;height:1px;visibility:hidden;"> <iframe src="index.html" name="my3" width="5" height="3" style="width:1px;height:1px;visibility:hidden;"> <iframe src="index.html" name="my4" width="5" height="3" style="width:1px;height:1px;visibility:hidden;"> <iframe src="index.html" name="my5" width="5" height="3" style="width:1px;height:1px;visibility:hidden;"> ====================================== ダウンロード用のファイル 1.php <?php // ダウンロードさせる元ファイル $filepath = "filepdf/file01.pdf"; // 保存時のファイル名(デフォルト) $filename = "ファイル1.pdf"; // HTTPヘッダ送信 header("Content-length: " . filesize($filepath)); header("Content-type: application/pdf"); header("Content-Disposition: attachment; filename=\"{$filename}\""); // ファイルを読み込んで出力 readfile($filepath); ?> ================================== 上記の用にソースを書いて複数ファイルのダウンロードを行っていますが、 1個ずつ選択した時はダウンロード成功 2個選択した時、2個目がダウンロードしない 3個以上選択した時、ダウンロードできないファイルが出てくる。 チェックを同じにして、数回試すと その度にダウンロードされないファイルが違っている。 なぜダウンロードされないファイルが出てくるのかがわかりません。 複数ファイルの連続ダウンロードでは、ダウンロードできるファイルの サイズに限りがあるとか、何かあるのでしょうか?

  • PHP
  • 回答数1
  • ありがとう数0

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

  • ベストアンサー
  • little-m
  • ベストアンサー率44% (45/102)
回答No.1

試していませんので、あくまで「・・ではないだろうか?」程度ですが、 newwin = window.open("1.php","my1"); と、オープンしたウインドウを全て同じ newwin で受けています。 ですので、処理途中のウィンドウが次のウインドウに置き換わってしまうためではないでしょうか。 newwin をそれぞれ別の名前にしてみては。

関連するQ&A

  • 子ウィンドウを閉じる

    今、チェックボックスにチェックを入れると javascriptで子ウィンドウを開き pdfファイルをダウンロードできるようにしています。 ********************************* check.html でのjavascript function down() { if (document.f1.file001.checked == true) { newwin = window.open( "down.php?date=data1" ,"_blank","width=100,height=100"); } if (document.f1.file002.checked == true) { newwin = window.open( "down.php?date=data2" ,"_blank","width=100,height=100"); } if (document.f1.file003.checked == true) { newwin = window.open( "down.php?date=data3" ,"_blank","width=100,height=100"); } if (document.f1.file004.checked == true) { newwin = window.open( "down.php?date=data4 ,"_blank","width=100,height=100"); } } ************************************ 子ウィンドウで開く down.php <?php //ダウンロードするファイル $files = $_GET[date]; //ディレクトリ名 $datedir = "file/"; //拡張子 $filetype = ".pdf"; // ダウンロードさせる元ファイル $filepath = "{$datedir}{$files}{$filetype}"; // 保存時のファイル名(デフォルト) $filename = "{$files}{$filetype}"; // HTTPヘッダ送信 header("Content-length: " . filesize($filepath)); header("Content-type: application/pdf"); header("Content-Disposition: attachment; filename=\"{$filename}\""); // ファイルを読み込んで出力 readfile($filepath); fclose($filepath); ?> *************************** これだとファイルのダウンロードはできるのですが 子ウィンドウが残ってしまいます。 javascript で setTimeout("newwin.close()", 8000); と子ウィンドウを閉じるようにしていても 閉じてくれません。 どうすれば、子ウィンドウを閉じることができるでしょうか? また閉じれない場合は、子ウィンドウに閉じるボタンを つけたいのですが down.php には header関数でファイル出力をしている為 その後にhtmlを書いても無効になります。 親ウィンドウの方から子ウィンドウに文字を出させることは できるでしょうか?

  • PHP

    PHPで <p>曜日</p> <p> <input type="checkbox" name="youbi[]" value="1" <?php if(strstr($result[4],'1')) echo"checked"; ?>>月 <input type="checkbox" name="youbi[]" value="2" <?php if(strstr($result[4], '2')) echo"checked"; ?>>火 <input type="checkbox" name="youbi[]" value="3" <?php if(strstr($result[4],'3')) echo"checked"; ?>>水 <input type="checkbox" name="youbi[]" value="4" <?php if(strstr($result[4],'4')) echo"checked"; ?>>木 <input type="checkbox" name="youbi[]" value="5" <?php if(strstr($result[4],'5')) echo"checked"; ?>>金 <input type="checkbox" name="youbi[]" value="6" <?php if(strstr($result[4],'6')) echo"checked"; ?>>土 <input type="checkbox" name="youbi[]" value="0" <?php if(strstr($result[4],'0')) echo"checked"; ?>>日 </p> <p>時間</p> <p> <input type="submit" value="設定" /> とやると日曜日を選択してsubmitするとチェックが外れます。なぜでしょうか?

    • ベストアンサー
    • PHP
  • 大量のcheckboxにcheckedを入れる

    チェックボックスが50個あります。 送信ボタンを押して元のページを再度開きます。 そのときにチェックしたボックスにチェックを入れた状態にしたいです。 inputタグの中に<?php if(isset($checkbox2) && in_array('b2',$checkbox2)){echo ' checked';} ?>を入れていますが単調になってしまいます。 単調にならずにする方法はありますか? <input type="checkbox" name="chk1[]" value="a1" />の場合はインデックスが固定でないのでできませんでした。 その他いけない箇所があれば教えて下さい。 お願いします。 <?php if(isset($_GET["chk1"])){ $checkbox1 = $_GET["chk1"]; for($i=0; $i<sizeof($checkbox1); $i++){ print $checkbox1[$i]."<br />"; } } if(isset($_GET["chk2"])){ $checkbox2 = $_GET["chk2"]; foreach($checkbox2 as $key => $val){ print $val."<br />"; } } ?> <html lang="ja"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title></title> </head> <body> <form method="get" action="checkbox.php"> <input type="checkbox" name="chk1[]" value="a1" /> <input type="checkbox" name="chk1[]" value="a2" /> <input type="checkbox" name="chk1[]" value="a3" /> <input type="checkbox" name="chk1[]" value="a4" /> <input type="checkbox" name="chk1[]" value="a5" /> <input type="checkbox" name="chk1[]" value="a6" /> <input type="checkbox" name="chk1[]" value="a7" /> <input type="checkbox" name="chk1[]" value="a8" /> <input type="checkbox" name="chk1[]" value="a9" /> <input type="checkbox" name="chk1[]" value="a10" /> <br /> <input type="checkbox" name="chk2['b1']" value="b1" <?php if(isset($checkbox2) && in_array('b1',$checkbox2)){echo ' checked';} ?>/> <input type="checkbox" name="chk2['b2']" value="b2" <?php if(isset($checkbox2) && in_array('b2',$checkbox2)){echo ' checked';} ?>/> <input type="checkbox" name="chk2['b3']" value="b3" <?php if(isset($checkbox2) && in_array('b3',$checkbox2)){echo ' checked';} ?>/> <input type="checkbox" name="chk2['b4']" value="b4" <?php if(isset($checkbox2) && in_array('b4',$checkbox2)){echo ' checked';} ?>/> <input type="checkbox" name="chk2['b5']" value="b5" <?php if(isset($checkbox2) && in_array('b5',$checkbox2)){echo ' checked';} ?>/> <input type="checkbox" name="chk2['b6']" value="b6" <?php if(isset($checkbox2) && in_array('b6',$checkbox2)){echo ' checked';} ?>/> <input type="checkbox" name="chk2['b7']" value="b7" <?php if(isset($checkbox2) && in_array('b7',$checkbox2)){echo ' checked';} ?>/> <input type="checkbox" name="chk2['b8']" value="b8" <?php if(isset($checkbox2) && in_array('b8',$checkbox2)){echo ' checked';} ?>/> <input type="checkbox" name="chk2['b9']" value="b9" <?php if(isset($checkbox2) && in_array('b9',$checkbox2)){echo ' checked';} ?>/> <input type="checkbox" name="chk2['b10']" value="b10" <?php if(isset($checkbox2) && in_array('b10',$checkbox2)){echo ' checked';} ?>/> <br /> <input type="submit" value="送信" /> </form> </body> </html>

    • 締切済み
    • PHP
  • java jqueryのnameとid

    ラジオボタンでcssを切り替える以下のようなプログラムがあるのですが、 $(function(){ entryChange1(); entryChange2(); entryChange3(); entryChange4(); entryChange5(); }); $(window).load(function entryChange1() { radio = document.getElementsByName('name1'); if(radio[1].checked) { $('.a,.b').show(); $('.c').css('width','585px'); }else if(radio[0].checked){ $('.a,.b').hide(); $('.c').css('width','270px'); } }); function entryChange1(){ $("input[name='name1'][value='0']").click(function() { $('.a,.b').show(); $('.c').css('width','585px'); }); $("input[name='name1'][value='1']").click(function() { $('a,.b').hide(); $('.c').css('width','270px'); }); } //entryChange2~5();は省略 ここで使っているnameはphpの方でも扱っているパラメータなのでjavascriptとは切り離したいのですが、idで代替はできますか? なにか方法があれば教えていただければありがたいです。

  • 子から親へチェックボックスの値を渡す

    親ウィンドウに <input type="text" size="30" value="製品名" name="disp_product" onClick="window.open('./search.php','search','menubar=no,height=500,width=800');"> というテキストフォームがあり、フォーカスされた際にsearch.phpが子ウィンドウとして開くよう設定してあります。 search.phpには <input type="checkbox" name="sample1" value="sample1">sample1 <input type="checkbox" name="sample1" value="sample2">sample2 <input type="checkbox" name="sample1" value="sample3">sample3 ・ ・ ・ <input type="checkbox" name="sample1" value="sample50">sample50 とあります。 この中でチェックされたものの値を「/」でつなげて、 親ウィンドウのテキストフォームに入力された状態にしたいと思っています。 が、一つの値を入力させるところまではできましたが、複数をとなるとできません。 どのようにしたらいいのでしょう。 現在、子ウィンドウのjavascriptは function ich(n) { window.opener.document.myForm.disp_product.value=document.getElementById("sample1").value; window.close(); } と記述してあります。 この場合は「sample1」が渡されるのはわかりますが、やはり複数を渡すというのがわかりません。

  • formから送信する値について

    nameを同じくする複数のチェックボックスのチェック項目について valueを「+」や「,」でつなげて送信したいです 例えば <input type="checkbox" name="color" value="red" checked > <input type="checkbox" name="color" value="blue" checked> <input type="checkbox" name="color" value="green" checked > <input type="checkbox" name="option" value="A" checked > <input type="checkbox" name="option" value="B" checked > <input type="checkbox" name="option" value="C" checked > ならば、submitされるURL変数は ?color=red,blue,green&option=A+B+C になるようにしたいのです よろしくお願いします

    • ベストアンサー
    • HTML
  • テーブルの中にiframe

    テーブルの中にiframeをしているのですが どうしてもボタンが右側に少しはみ出ますし iframeは縦400pxを超えるページを表示すると 縦スクロールバーが表示されますが それも右側にはみ出ます。 どうにか800pxの中に収まらないものでしょうか? また、ボタンのボーダを下記ソースでは消していますが デフォルトで表示される立体感のあるボタンのまま 800pxの中に収めたいです。 HTML5、CSS2.1です。 ご相談お願いします。 <table> <tr style="width: 800px; height: 50px"> <td><input type="button" value="1"/></td> <td><input type="button" value="2"/></td> <td><input type="button" value="3"/></td> <td><input type="button" value="4"/></td> <td><input type="button" value="5"/></td> </tr> <tr style="width: 800px; height: 400px"> <td colspan="5" style="width: 800px; height: 400px"> <iframe src="hoge.htm"></iframe> </td> </tr> <tr style="width: 800px; height: 50px"> <td colspan="5" style="width: 800px; height: 50px"> <p>hoge</p> </td> </tr> </table> ------------------------------------------------------------ table { padding: 0px; margin: 0px; border-style: none; border-width: 0px; } tr td { padding: 0px; margin: 0px; border-style: none; border-width: 0px; } input { border-style: none; border-width: 0px; padding: 0px; margin: 0px; color: Red; width: 160px; height: 50px; font-size: 20px; font-family: HGS明朝B; background-color: transparent; } iframe { padding: 0px; margin: 0px; border-style: none; border-width: 0px; background-color: transparent; width: 800px; height: 400px; }

    • ベストアンサー
    • HTML
  • チェックボックスの初期選択と選択保持

    複数のチェックボックスのうちどれかを初期選択させ、ボタン押下後は選択保持をさせたいです。 片方のみならできるのですが、どなたかご教授いただけるとうれしいです。 現在のソースはこんな感じになっていて選択したものの保持はできるのですが、初期選択ができていません。よろしくおねがいします。 <html> <body> <form name="form" method="post"> <?php test1() ?> test1 <?php test2() ?> test2 <?php test3() ?> test3<br><br> <input type="submit" name="button" value="button"> </form> <?php function test1(){ if ($_POST['test1']){ echo "<input type=\"checkbox\" name=\"test1\" checked>"; }else{ echo "<input type=\"checkbox\" name=\"test1\">"; } } function test2(){ if ($_POST['test2']){ echo "<input type=\"checkbox\" name=\"test2\" checked>"; }else{ echo "<input type=\"checkbox\" name=\"test2\">"; } } function test3(){ if ($_POST['test3']){ echo "<input type=\"checkbox\" name=\"test3\" checked>"; }else{ echo "<input type=\"checkbox\" name=\"test3\">"; } } ?> </body> </html>

    • 締切済み
    • PHP
  • phpでのメールフォームの作成について

    HTMLで <form action="mail.php" method="post"> <input name="aaa" type="checkbox" id="aaa" value="AAA" checked> <input name="bbb" type="checkbox" id="bbb" value="BBB" checked> <input name="ccc" type="checkbox" id="ccc" value="CCC" checked> </form> として、次に進むボタンを押すとmail.phpに飛び mail.phpでは、チェックされたものだけを表示したいのですが、どうすればよいでしょうか? もし、AAAとBBBが選ばれたら あなたが選んだのは AAA、BBBです。 と表示したいです。そのあとにメールフォームを続けるつもりです。 ご教授よろしくお願いします。

    • 締切済み
    • PHP
  • チェックが入っていなかったら処理を行いたい

    いつもお世話になっております。 只今チェックボックスにチェックが入っていなかったらチェックを入れるという処理を Javascript、JQueryで行いたいのですが上手く動作せずに困っております。 if ( $( 'input:checkbox[name="tax_input[pick-up][]"]' ).is( 'checked' ) == false ) { jQuery('input:checkbox[name="tax_input[pick-up][]"]').removeAttr ( 'checked' ); jQuery('input:checkbox[name="tax_input[pick-up][]"]:eq(3)').attr ( 'checked', 'checked' ); } 上記のソースで試したのですが反応が全くありませんでした。 if( $( 'input:checkbox[value="98"]' ).is( ':checked' ) ) { jQuery('input:checkbox[name="tax_input[pick-up][]"]').removeAttr ( 'checked' ); jQuery('input:checkbox[name="tax_input[pick-up][]"]:eq(2)').attr ( 'checked', 'checked' ); } チェックが入っている場合の判定ですが上記の場合は動きました。 記述ミス、根本的に書き方が違うなどございましたらご指摘ください。 ご回答のほどどうぞよろしくお願い致します。

専門家に質問してみよう