1

私はショップシステムに取り組んでおり、次のリンクがありますhttp://cmstutorials.org/shop/downloads/2793156879(元のリンクはcmstutorialsです。org/ shop / downloads.php?download = 2793156879)

私がやろうとしているのは、ファイルへの実際のリンクを表示せずに、ユーザーがID2793156879と一致するアイテムをダウンロードできるようにすることです。themeforest.netにあるように

どうすればいいですか?

4

5 に答える 5

2

この例はあなたを助けるはずです:

$len = filesize($filename);
header("Content-type: image/jpeg");
header("Content-Length: $len");
header("Content-Disposition: inline; filename=\"$new_filename\"");
readfile($filename);

または別のもの、私にはもっと簡単に見えます:

<?php
header('Content-type: image/jpeg');
$f = file_get_contents('path/to/image.jpg');
print $f;
?>

PSもちろん、content-typeファイルに合わせる必要があります。

于 2009-10-03T16:21:29.007 に答える
1

実際のoutput(echo )を送信する前に、 header ()を呼び出す必要があります。そうしないと、このエラーがスローされます。

「例2」を参照してください:http ://www.w3schools.com/php/func_http_header.asp

于 2009-10-03T16:34:34.403 に答える
0

wooohoooo

たくさんの人に感謝します、このサイトのルール私はいつも正しい答えを得る:D

これをheader.phpincludeob_start ();の上に貼り付けました。

ヘッダー関数の直前ob_get_clean();

人々に役立つかもしれません(注:2番目の関数では、getの前にスペースを追加して正しく表示されるようにしました。使用するときは、忘れずに削除してください)

于 2009-10-03T17:00:19.233 に答える
0

このサービスを試して拡張する場合は、perlbalを確認することをお勧めします。それが行う巧妙なトリックの1つは、アプリがperlbalに静的ファイルを別のサーバーに提供するように指示する特別なヘッダーを送信できることです。このように、PHPスレッドをクライアントにビットをプッシュダウンすることで拘束する必要はありません。

于 2009-10-03T20:08:46.233 に答える
0

コンテンツの処理は問題ありませんが、別の解決策はPATH_INFOを使用して、次の方法でファイルを取得することです。

http://example.com/download.php/2793156879.zip

download.phpは次のようになります

// handle path_info
$filename=$_SERVER['PATH_INFO']; // gets "/2793156879.zip" as $filename

// do smtg w/ $filename...
// ...

// download 
$len = filesize($filename);
header("Content-type: application/force-download");
header("Content-Length: $len");
readfile($filename);

注:application / force-downloadは存在しません。存在するすべてのブラウザーで、強制的にダウンロードするためだけに存在します。(一部のMSIEは、アプリケーション/オクテットストリームに問題があったようです)

このアプローチには、すべてのブラウザで機能するという利点があります。非常に古いブラウザでも、「Content-Disposition:」ヘッダーをサポートしていません。

PATH_INFO文字列から製品コードを自分でsubstr()する必要があるという小さな欠点があります

于 2009-10-04T02:15:43.870 に答える