file_put_contents无法处理远程图像

时间:2013-05-26 01:36:52

标签: php

我有以下代码给自己发送图片

$img = file_get_contents("http://www.cpc.ncep.noaa.gov/products/predictions/threats/hazards_d3_7_contours.png");
file_put_contents("hazards_d3_7_contours.png",$img);

$message = $img;

$headers = "From: me";
$headers = "Content-type: image/gif";
$subject = '3-7 Weather Hazard Forecast';
$to = 'me@gmail.com';
mail($to, $subject, $message, $headers);
然而,我得到的图像被打破了 知道为什么吗?

3 个答案:

答案 0 :(得分:0)

图片的文件扩展名为.png,但您将其发送为image/gif。也许这与它有关?

答案 1 :(得分:0)

即使从远程服务器检索到的图像是image/gif,您也会发送包含mimetype image/png的电子邮件。然后,使用from值覆盖标头。你正在寻找这样的东西:

$headers   = [];
$headers[] = 'From: me';
$headers[] = 'Content-type: image/png';

$subject = '3-7 Weather Hazard Forecast';
$to      = 'me@gmail.com';

mail($to, $subject, $message, implode(PHP_EOL, $headers));

答案 2 :(得分:-1)

这对我有用:

public function store()
{

    $file = file_get_contents($_FILES['myfile']['tmp_name']);
    file_put_contents("img/" . $_FILES['myfile']['name'], $file);

    return $_FILES['myfile'];

}