1

このように私はphpを使用して画像をロードします:

header("Content-type: image/jpeg");
$image=imagecreatefromjpeg("http://i.imgur.com/zWaQJNCb.jpg");
imagejpeg($image);

しかし問題は、画像をWebブラウザからデスクトップに手動で保存したい場合、すべての画像がix.jpeg[ここではファイル名はix.php]のように同じ名前になりますが、そのように構成する方法がわかりませんheader。画像にはランダムな名前が付け25xc.jpeg, 36s5a2f.jpeg...られます。デスクトップに保存するときのように。何かアイデアはありますか?

4

5 に答える 5

3

これは仕事をします!

$dt = date(time());
header("Content-type: image/jpeg");
header('Content-Disposition: inline; filename="'. $dt .'.jpg"');
$image=imagecreatefromjpeg("http://i.imgur.com/knNxDFnb.jpg");
imagejpeg($image);
于 2013-03-05T17:57:48.057 に答える
2

filename呼び出しで値を使用しますheader例1を参照してください

<?php
// We'll be outputting a PDF
header('Content-type: application/pdf');

// It will be called downloaded.pdf
header('Content-Disposition: attachment; filename="downloaded.pdf"');

// The PDF source is in original.pdf
readfile('original.pdf');
?>

「ランダムな文字列を生成する」部分はあなたに任せます。ファイルのチェックサムに基づいて作成することをお勧めしますが、それは私だけです。

于 2013-03-05T17:26:53.323 に答える
1

それを行うには、100ではないにしても数十の方法があります。

  1. time()ファイル名の後に追加します。このようにして、すべてのファイル名に(一意の)番号が付けられます。
  2. のようなハッシュ関数を使用しますmd5()
  3. このコードを使用してください-

    function generateRandomName(len) {
            $out = '';
            for($i=0; $i<len; $i++) {
                $out.=chr(rand(65,122));
            }
            return $out;
        }
    
  4. ファイル名の後に関数を追加するだけrandです(ただし、ファイル名は同じ長さになりません)。

  5. Googleはあなたの友達です。

于 2013-03-05T17:37:05.993 に答える
1

これは、ユーザーに一意の名前を生成する場合に必要なことです。必要なのは、実際のタイムスタンプを使用し、ヘッダーのファイル名パラメーターを使用することだけです。ランダム生成を使用する場合は、次のように実行できます。同じ名前を2回取得するケースはごくわずかです):

$dt = date(time());

header("Content-type: image/jpeg");
header('Content-Disposition: attachment; filename="'. $dt .'.jpg"');

上記は、以下のような一意の画像名を生成します。

1362504465.jpg

これがお役に立てば幸いです。

于 2013-03-05T17:39:48.143 に答える
0

これにより、8文字の長い文字の名前azが作成されますが、魔法をかけたり、http://www.asciitable.com/を使用したりできます。

function randChar() {
    return char(rand(97, 122); 

    // Then you could either do a random number from 97 to 122 for a-z or just make an array of all the characters you would like in the filename. 
}

$filename = '';
$amountOfChars = 8;

for($i = 0; $i < $amountOfChars; $i++; ) $filename .= randChar();

お役に立てれば

于 2013-03-05T17:30:04.037 に答える