1

我在从 url 下载图像时遇到问题,

$url = 'http://example.com/image.php';
$img = '/my/folder/flower.gif';
file_put_contents($img, file_get_contents($url));

在这个代码文件中保存在我的服务器文件夹中。但我需要不保存在我的服务器中,它需要下载给用户。

4

2 回答 2

0

使用application/octet-stream代替 image/jpg:

如果在具有 application/octet-stream 内容类型的响应中使用 [the Content-Disposition] 标头,则暗示用户代理不应显示响应,而是直接输入“将响应另存为...”对话。 — RFC 2616 – 19.5.1 内容处置

EDIT

function forceDownloadQR($url, $width = 150, $height = 150) {
    $url    = urlencode($url);
    $image  = 'http://chart.apis.google.com/chart?chs='.$width.'x'.$height.'&cht=qr&chl='.$url;
    $file = file_get_contents($image);
    header("Content-type: application/octet-stream");
    header("Content-Disposition: attachment; filename=qrcode.png");
    header("Cache-Control: public");
    header("Content-length: " . strlen($file)); // tells file size
    header("Pragma: no-cache");
    echo $file;
    die;
}

forceDownloadQR('http://google.com');

如果您想将文件下载到您的网络服务器(并保存),只需使用copy()

copy($url, 'myfile.png');
于 2013-07-31T10:56:21.103 回答
0

设置正确的标题并回显它而不是 file_put_contents

$url = 'http://example.com/image.php';

header('Content-Disposition: attachment; filename:image.jpg');
echo file_get_contents($url);
于 2013-07-31T10:56:50.033 回答