0

code.google.com でホストされている実行可能ファイルがあります (たとえば、http://code.google.com/fold/file1.exe )。ユーザーがhttp://mysite.com/download.exeを参照すると、リダイレクトなしでファイルhttp://code.google.com/fold/file1.exeのコンテンツを自動的に取得する必要があります。ユーザーは、 http://code.google.com/fold/file1.exeではなくhttp://mysite.com/download.exeからファイルをダウンロードしていると考える必要があります。

PHPを使用してこれを行うにはどうすればよいですか? このプロセスに特別な用語はありますか?

4

2 に答える 2

2

URL 書き換えを使用して、ファイル名を引数としてスクリプトに渡すことができます。スクリプト (この例では downloadexecutable.php) は、'download' を含む $_GET 引数 'q' に応答します。

<?php
if (isset($_GET['q']) && $_GET['q'] == "download") {
    //you will want to:
    //1) set Content-type to be the correct type...I just set it to octet-stream because I'm not sure what it should be
    header('Pragma: public');   // required
    header('Expires: 0');       // no cache
    header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
    header('Cache-Control: private',false);
    header('Content-Type: application/octet-stream');
    header('Content-Disposition: attachment; filename="'.basename('http://code.google.com/fold/file1.exe').'"');
    header('Content-Transfer-Encoding: binary');
    header('Content-Length: '.filesize('http://code.google.com/fold/file1.exe'));    // provide file size
    echo file_get_contents('http://code.google.com/fold/file1.exe');      // push it out
    exit()
}
?>

次に、次のように、ルート ディレクトリの .htaccess ファイルで Apache の URL 書き換えを有効にします。

RewriteEngine On
RewriteRule ^(.+)\.exe$ /downloadexecutable.php?q=$1 [NC,L]

ユーザーが .exe で終わるファイルを要求した場合、次のように downloadexecutable.php を実行する必要があります。

リクエスト: http://yoursite.com/download.exe

PHP によって実際に処理されるもの: http://yoursite.com/downloadexecutable.php?q=download

リクエスト: http://yoursite.com/this/could/be/a/bug.exe

処理済み: http://yoursite.com/downloadexecutable.php?q=this/could/be/a/bug

明らかに少し作業が必要であり、上記のいずれもテストしていませんが、少しいじって、Google を使用する気があれば、動作させることができるはずです。

URL 書き換えチュートリアル: http://www.addedbytes.com/articles/for-beginners/url-rewriting-for-beginners/

PHP のソース: http://snipplr.com/view/22546/

于 2012-09-02T06:16:42.077 に答える
1

このアプローチを試してみてください:

<?
function get_file($url) {
$ficheiro = "file.exe";
$fp = fopen (dirname(__FILE__) . "/$ficheiro", 'w+'); //make sure you've write permissions on this dir
//curl magic
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_TIMEOUT, 50);
curl_setopt($ch, CURLOPT_FILE, $fp);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_exec($ch);
curl_close($ch);
fclose($fp);
}

//sets the original file url
$url = "http://code.google.com/fold/file1.exe";

//downloads original file to local dir
get_file($url);

//redirect user to the download file hosted on your site
header("Location: $ficheiro");
?>

これを .htaccess に追加します。

RewriteEngine On
RewriteRule ^download.exe  this_script.php
于 2012-09-02T06:17:26.857 に答える