2

このサイトはこれまで非常に役に立ちましたが、ついに問題に直面したようです。HTML入力に変数を配置する方法についての質問は、以前に尋ねられ、分析されましたが、うまくいかないように見える問題があります。

<?php
if(isset($_POST['file_name'])){
    $file = $_POST['file_name'];
    header('Content-Disposition: attachment; filename="'.$file.'"');
    readfile('uploads/'.$file);
    exit();
}
?>
<form action="force_download.php" method="post" name="downloadform">
  <input name= "file_name" type="hidden" value="test.txt" />
  <input type="submit" value="Download">
</form>

上記のコードは、テキスト ファイル「test.txt」をダウンロードするために使用されています。アップロード フォルダにある多くのテキスト ファイルの 1 つです。私の問題?値 test.txt を変数に変換するにはどうすればよいですか? 私が読んだ以前の awner は次のようになります。

<input type="hidden" name="file_name" value="<?php echo htmlspecialchars($file); ?>" />

問題は、それを行うと、ファイルの代わりに force_download.php がダウンロードされることです。

私は数日前にコーディングを始めたばかりなので、そうです...初心者の質問で申し訳ありません。

4

2 に答える 2

0

ここに 1 つの提案があります。いくつかの調整が必要になる場合があります。

これを呼び出すファイルで、コードを次の場所に投稿しました:(
私がよく理解していれば:intranet.php)

<form action="force_download.php" method="post" name="downloadform">
<?php
$path = "./filesfolder/"; // this you need to change to your files folder

function createDir($path)
{   
    if ($handle = opendir($path)) 
    {
        while (false !== ($file = readdir($handle))) 
        {
            if (is_dir($path.$file) && $file != '.' && $file !='..')
                printSubDir($file, $path, $queue);
            else if ($file != '.' && $file !='..')
                $queue[] = $file;
        }
        printQueue($queue, $path);
    }
}
function printQueue($queue, $path)
{
    foreach ($queue as $file) 
    {
        printFile($file, $path);
    } 
}
function printFile($file, $path)
{
    if ($file=="thumbs.db") {echo "";}
    else 
    {
    echo "
<input name= \"".$file."\" type=\"hidden\" value=\"".$file."\" />";
    }
}
createDir($path);
?>
<input type="submit" value="Download">
</form>

これにより、見つかったすべてのファイルの html が生成され、各ファイルへのクリック可能なリンクが表示されます。この場合、投稿したファイルには必要ありません (これは force_download.php だと思います)。

于 2013-06-25T22:17:19.210 に答える