如何从Laravel中的URL下载图像?

时间:2017-10-25 08:00:21

标签: php laravel laravel-5.2 laravel-5.3

我有一个像这样的图片网址:

http://phpimagick.com/customImage/Imagick/distortImage?imagePath=Lorikeet&distortion=1

我想将此图像下载到Laravel中的公共文件夹,然后从我的公共文件中获取图像并在我的项目中使用。

此网址使用相同的代码:

http://i.stack.imgur.com/WCveg.jpg

(此URL中的图像是JPG)。

我的代码:

if ($request->city_image_hidden_link) {                           
   $image_to_upload = $request->city_image_hidden_link;
   $extra_name = rand(1, 50000) + time();

   $filename = basename($image_to_upload);

   file_put_contents('assets/UploadedImages/' .$extra_name .   $filename,file_get_contents($image_to_upload)); 
   $target_dir = "assets/UploadedImages/";
   $image_to_upload = "/" . $target_dir . $extra_name.$filename;
   $data['city_image'] = $image_to_upload;
}

1 个答案:

答案 0 :(得分:0)

不要假设来自文件名的扩展名,而是来自mimetype

$imageDownloaded = file_get_contents($image_to_upload);
$imageType = exif_imagetype($imageDownloaded);
$mimeType = explode('/', image_type_to_mime_type($imageType));
$extension = $mimeType[1];

当然你可以改进那里的逻辑,也可以检查是否存在或为了简洁而跳过了错误的返回