Laravel 5存储来自URL的图像

时间:2017-05-18 16:10:12

标签: php laravel intervention

我尝试使用Intervention将图像存储到我的存储空间。

这是我到目前为止所尝试的(尝试1):

$path = 'http://f2b9x.s87.it/images/1/FR_laura-kithorizontal.gif';
$filename = basename($path);
$image = Image::make($path);
$store = $image->storeAs('image/'.$filename,'public');

但是我收到了这个错误: Command (storeAs) is not available for driver (Gd).

然后我尝试了这个(尝试2):

Image::make('http://f2b9x.s87.it/images/1/FR_laura-kithorizontal.gif')->save(public_path('/images/saveAsImageName.jpg'));

但是我收到了这个错误:Can't write image data to path (C:\xampp\htdocs\app\public\/images/saveAsImageName.jpg)

在尝试2中,我尝试过这样做:public_path('\images\saveAsImageName.jpg')只是为了确保反斜杠不会导致问题,但它给了我同样的错误。

任何帮助?

2 个答案:

答案 0 :(得分:0)

试试这个

Image::make('http://f2b9x.s87.it/images/1/FR_laura-kithorizontal.gif')->save(public_path('images/saveAsImageName.jpg'));

请注意,我在public_path()函数中省略了第一个斜杠(" /")。

答案 1 :(得分:0)

问题在于我没有创建目录(感谢@Tim Lewis)

我解决了这个问题:

use File;

File::makeDirectory(public_path('images/kits/'.$microtime), 0775, true);

第一个参数是路径
第二个参数是给予该文件夹的权限
第三个参数通常默认为false,但如果为true,则以递归方式创建目录。这意味着它首先检查是否创建了图像,然后是套件,然后(在这种情况下)是否创建了具有该microtime的文件夹。
如果不存在,则会创建所有这些。