0

こんにちは、ファイルのダウンロードを作成する必要があります。ダウンロード用の入力フォームとフォームの検証、および dB の挿入はすべて同じページにあります。フォームが送信された場合、ファイルのダウンロードは、[名前を付けて保存] ウィンドウで自動的にトリガーされる必要があります。私は次のようにコードを書きました:

if(isset($_POST['submit'])){
$u=$_POST['uname'];
/*similarly getting all posted data*/
echo '<br><b>'.JText::_( 'Thank you for submitting your details...' ).'</b>';
 $db =& JFactory::getDBO();
  $query = "/*db inserting query*/";
  $db->setQuery( $query );
  $db->query();

  $filee=  basename($path); /*$path contains value form $_POST*/
   $full='http://localhost/joomla/images/uploads/'.$filee;

  ?>
 <br><b>
  <span>If the download  does not start automatically in a few seconds, <a href="<?php     echo JURI::base(); ?>/images/myfile/<?php echo $filee;?>" target="_blank"><b> Click this link</b></a></span></b>


 <?php


   header('Content-Description:File Transfer');
   header("Content-type:application/pdf");
   header("Content-type:application/zip");
   header("Content-type:image/jpeg");
   header("Content-type:image/png");
   header("Content-type:application/msword");
   header("Content-Disposition: attachment; filename=".$filee."");
   header("Cache-control: private");
   readfile($full);


   }
 else{ code for printing fill up form}

ダウンロードする前に「送信してくれてありがとう..」などのメッセージを印刷する必要がありますが、記入フォームを送信すると、上記のテキストが表示されずにダウンロードが開始されます。しばらく待ってからダウンロードするにはどうすればよいですか?

4

1 に答える 1

0

PHPで使用sleep()して実行を遅らせることができます。このようにしてみてください

if(isset($_POST['submit'])){
$u=$_POST['uname'];
echo '<br><b>'.JText::_( 'Thank you for submitting your details...' ).'</b>';
 $db =& JFactory::getDBO();
  $query = "/*db inserting query*/";
  $db->setQuery( $query );
  $db->query();
  $filee=  basename($path); /*$path contains value form $_POST*/
  $full='http://localhost/joomla/images/uploads/'.$filee;

  ?>
 <br><b>
  <span>If the download  does not start automatically in a few seconds, <a href="<?php     echo JURI::base(); ?>/images/myfile/<?php echo $filee;?>" target="_blank"><b> Click this link</b></a></span></b>


 <?php

   sleep(10);//Will delay for 10 seconds

   header('Content-Description:File Transfer');
   header("Content-type:application/pdf");
   header("Content-type:application/zip");
   header("Content-type:image/jpeg");
   header("Content-type:image/png");
   header("Content-type:application/msword");
   header("Content-Disposition: attachment; filename=".$filee."");
   header("Cache-control: private");
   readfile($full);


   }
 else{ code for printing fill up form}
于 2013-10-23T09:25:00.743 に答える