好的,当我想上传图片时。我经常这样做:
$file = Input::file('image');
$destinationPath = 'whereEver';
$filename = $file->getClientOriginalName();
$uploadSuccess = Input::file('image')->move($destinationPath, $filename);
if( $uploadSuccess ) {
// save the url
}
用户上传图片时效果很好。但是如何从URL保存图像???
如果我尝试这样的话:
$url = 'http://www.whereEver.com/some/image';
$file = file_get_contents($url);
然后:
$filename = $file->getClientOriginalName();
$uploadSuccess = Input::file('image')->move($destinationPath, $filename);
我收到以下错误:
Call to a member function move() on a non-object
那么,我如何使用laravel 4上传图像?
艾米非常感谢。
答案 0 :(得分:10)
我不知道这会对你有多大帮助,但你可能想看看Intervention Library。它最初打算用作图像处理库,但它提供了来自url的保存图像:
$image = Image::make('http://someurl.com/image.jpg')->save('/path/saveAsImageName.jpg');
答案 1 :(得分:2)
$url = "http://example.com/123.jpg";
$url_arr = explode ('/', $url);
$ct = count($url_arr);
$name = $url_arr[$ct-1];
$name_div = explode('.', $name);
$ct_dot = count($name_div);
$img_type = $name_div[$ct_dot -1];
$destinationPath = public_path().'/img/'.$name;
file_put_contents($destinationPath, file_get_contents($url));
这会将图像保存到/ public / img,filename将是原始文件名,对于上述情况为123.jpg。
从here
引用的获取图片名称答案 2 :(得分:1)
Laravel的Input :: file方法仅在您通过POST请求上传文件时使用。你得到的错误是因为file_get_contents没有返回laravel的类。而且您不必使用move()方法或类似方法,因为您从url获取的文件不会上传到您的tmp文件夹。
相反,我认为你应该使用PHP upload an image file through url这里描述的内容。
像:
// Your file
$file = 'http://....';
// Open the file to get existing content
$data = file_get_contents($file);
// New file
$new = '/var/www/uploads/';
// Write the contents back to a new file
file_put_contents($new, $data);
我现在无法检查它,但它似乎不是一个糟糕的解决方案。只需从网址获取数据,然后随时将其保存