使用:Laravel 5.2
,Intervention Image
http://image.intervention.io/
我有一张可以上传图片的表格。此图像调整大小并存储在我的服务器上。这一切都很完美,但我最近需要制作第二个图像尺寸。所以我做了以下事情:
控制器
// Resize uploaded thumbnail and return the temporary file path
$thumbnail = $request->file('thumbnail');
$thumbnail_url = $this->storeTempImage($thumbnail,350,230);
$video_thumbnail_url = $this->storeTempImage($thumbnail,1140,640);
StoreTempImage方法
public function storeTempImage($uploadedImage, $width, $height)
{
//resize and save image to temporary storage
$originalName = $uploadedImage->getClientOriginalName();
$name = time() . $originalName;
$uploadedImage->move('images/temp/', $name);
Image::make("images/temp/{$name}")->fit($width, $height, function ($constraint) {
$constraint->upsize();
})->save("images/temp/{$name}");
return "images/temp/{$name}";
}
发布表单后,我的第一张图片被正确保存,但之后会抛出错误:
文件" myfile.jpg"因未知错误而未上传。
我尝试了什么
我的第一个想法是time()
函数不够具体,文件名称相同。所以我将time()
更改为microtime(true)
我为图像尺寸制作了两种单独的方法
这两种解决方案都没有起作用并且犯了同样的错误。
答案 0 :(得分:1)
实际上您使用相同的对象来创建和保存图像,您应该这样做:
// wait for X number of elements
presenceOfAll = function (elem, num, timeout) {
var time = timeout || 5000;
console.log('Waiting for elements ' + elem.locator() + ' to have a count of ' + num);
return browser.wait(function () {
return elem.count().then(function (count) {
return count >= num;
});
}, time, 'Failed waiting for ' + elem.locator() + ' to have ' + num + ' total items');
};
希望这有帮助。
答案 1 :(得分:0)
试试这个解决方案
$thumbnail = $request->file('thumbnail');
$thumbnail_url = $this->storeTempImage($thumbnail,350,230);
$video_thumbnail_url = $this->storeTempImage(clone $thumbnail,1140,640);
$video_thumbnail_url = $this->storeTempImage($thumbnail,1140,640);
您将OBJECT发送到storeTempImage()
- 并在行
$uploadedImage->move('images/temp/', $name);
我认为你必须有2个物体 - 换句话说它不能正常运作。