1

はじめに、私は PHP 初心者です。

ファイルをホストする Apache サーバーがあります。1 つの PHP ファイルしか指定できないデバイスがあります。私がする必要があるのは、ダウンロードしたいファイルの名前でPHPファイルを読み取らせ、それが保存されているディレクトリを指すようにすることです。現在、1つのファイルを指していますが、複数を指すことができるようにする必要があります。これはPHPで可能ですか?

これが私がこれまでに持っているものです:

<?php 
$file_name = 'file.img';
$size = filesize($file_name);
$file_url = 'http://192.168.0.5/' . $file_name;
header("Content-length: $size");
header("Content-Type: text/plain");
header("Content-Transfer-Encoding: binary");
header("Content-disposition: attachment; filename=\"".$file_name."\"");
readfile($file_url);?>

編集:ファイルをダウンロードするために入力したいコマンドは、次のように十分に近いです:

cmd=download+-a+$$.img+altimage
cmd=download+-a+$$.conf+altconfig

ダウンロード ディレクトリは .php ファイルです。これを行う方法については、他の提案を受け付けています。

Edit2: 正確なサンプル URL は次のとおりです。

 myserver.com/cgi-bin/va/cmd?hdl+fullconfig.ini+altconfig

hdl は、サーバーからファイルをダウンロードするためにダウンロード ディレクトリを指す事前定義された関数であるため、意味するレイアウトはまったく同じではありません。

4

1 に答える 1

0

何をしようとしているのか正確に理解できませんが、ユーザーが複数のファイルをダウンロードできるようにしたいのでしょう。それが正しければ、これを達成する 1 つの方法を次に示します。

ZIP 拡張子を使用して、PHP に ZIP アーカイブを作成させることができます。動作させるには、php.ini 内に拡張機能 php_zip.dll をロードする必要があります。

$ZIP = new ZipArchive();

// Use the current time as the filename to prevent two users to use the same file
$ZIPName = microtime().".zip";

// Create a new ZIP file
$ZIP->open($ZIPName, ZIPARCHIVE::CREATE);

// Loop through all files - $Files needs to be an array with the names of the files you want to add, including the paths
// basename() will prevent the creation of folders inside the ZIP
foreach ($Files as $File) {
    $ZIP->addFile($File, basename($File));
}

// Close the archive
$ZIP->close();

// Send the archive to the browser
readfile($ZIPName);

これがあなたが探していたものであることを願っています。

于 2013-02-28T11:54:13.203 に答える