1

这样我使用 php 加载图像:

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

但问题是,如果我想将图像从我的网络浏览器手动保存到我的桌面,那么所有图像都具有相同的名称,如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值。参见示例 1header

<?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

如果您想为您的用户生成唯一名称,这就是您需要做的,您需要做的就是使用实际时间戳并在标题中使用文件名参数,您可以像下面那样做(如果您使用随机生成在极少数情况下您会两次获得相同的名称):

$dt = date(time());

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

以上将生成唯一的图像名称,如下所示:

1362504465.jpg

我希望这有帮助。

于 2013-03-05T17:39:48.143 回答
1

有几十种甚至上百种方法可以做到这一点。

  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. 谷歌是你的朋友。

于 2013-03-05T17:37:05.993 回答
0

这将使字母 az 的 8 个字符长名称,但您可以做一些魔术和/或使用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 回答