0

いくつかのテキストファイルのzipフォルダを作成するためのphpスクリプトがあります

 <?php
  $path = "path\to\files";
  $files = array($path.'\ionic interaction.txt',$path.'\file1.txt',$path.'\file2.txt',$path.'\file3.txt',$path.'\file3.txt');
  $folder = $_POST['filename'];
  $zipname = $folder.'.zip';
  echo '<form action="download.php" method="post" name="zippass2download"><input    type="hidden" name="zipname" value="'.$zipname.'"></form>';
  $zip = new ZipArchive;
  $zip -> open($zipname, ZipArchive::CREATE);
  foreach($files as $file)
   {
     $zip -> addFile($file);
   }
  $zip -> close();
  ?>

そのスクリプトの横に、最初のスクリプトで作成したzipフォルダーをダウンロードするためのハイパーリンクを作成しました。

 <a href="download.php">Download</a>

download.phpで私は次のコードを持っています

<?php
$path2zip = 'C:/wamp/www/PPInt';
$tobezipped = $_POST['zipname'];
header('Content-disposition: attachment; filename=$tobezipped');
header('Content-type: application/zip');
readfile('$path2zip/$tobezipped');
?>

どこに行かないかが問題です。誰かが私のためにこれを解決できますか?

4

3 に答える 3

1

$tobezipped = $_POST['zipname'];

download.php の呼び出し時に行われる get リクエストには設定されません。Rember HTTP はステートレスなので、ファイルを生成した後。リンクがクリックされたとき、POST パラメータは次の GET リクエストに存在しません。

おそらく、「download.php?tobezipped=zipname.zip」のように、zipname / パスを download.php リンクに追加する必要があります。

于 2013-02-06T07:34:08.893 に答える
1

「download.php」は「$_POST['zipname']」を取得していません。フォームを投稿していない代わりにリンクを提供しているため、ファイル名の入力を非表示にしたフォームを投稿するためのボタンを提供してみてください。以下の「Dasun」で指定されたコードが機能しているのは、ファイルと zip ファイルの相対 URL を確認するだけです。

于 2013-02-06T07:52:22.450 に答える
0

以下のコードを試してください

<?php 
$file_name = $_POST['zipname'];
$file_url = 'C:/wamp/www/PPInt'. $file_name;
header('Content-Type: application/octet-stream');
header("Content-Transfer-Encoding: Binary"); 
header("Content-disposition: attachment; filename=\"".$file_name."\""); 
readfile($file_url);
?>
于 2013-02-06T07:39:27.140 に答える