Intervention\Image\Exception\NotSupportedException 不支持编码格式 (tmp)
Intervention\Image\Exception\NotSupportedException Encoding format (tmp) is not supported
我正在使用带有 Laravel 5.6 的干预包,每当我上传文件时都会遇到这个问题,我收到错误编码格式 (tmp) 不受支持。我也启用了 gdd2 扩展。这是我用过的代码。
public function store(Request $request)
{
$this->validate($request , [
'name' => 'required|unique:categories',
'description' => 'max:355',
'image' => 'required|image|mimes:jpeg,bmp,png,jpg'
]);
// Get Form Image
$image = $request->file('image');
$slug = str_slug($request->name);
if (isset($image))
{
$currentDate = Carbon::now()->toDateString();
$imageName = $slug.'-'.$currentDate.'-'.uniqid().'.'.$image->getClientOriginalExtension();
// Check if Category Dir exists
if (!Storage::disk('public')->exists('category'))
{
Storage::disk('public')->makeDirectory('category');
}
// Resize image for category and upload
$categoryImage = Image::make($image)->resize(1600,479)->save();
Storage::disk('public')->put('category/'.$imageName, $categoryImage);
// Check if Category Slider Dir exists
if (!Storage::disk('public')->exists('category/slider'))
{
Storage::disk('public')->makeDirectory('category/slider');
}
// Resize image for category slider and upload
$categorySlider = Image::make($image)->resize(500,333)->save();
Storage::disk('public')->put('category/slider/'.$imageName, $categorySlider);
}
else
{
$imageName = 'default.png';
}
$category = new Category();
$category->name = $request->name;
$category->slug = $slug;
$category->description = $request->description;
$category->image = $imageName;
$category->save();
Toastr::success('Category Saved Successfully','Success');
return redirect()->route('admin.category.index');
}
干预图像 save() 方法需要一个文件名,以便它知道将图像保存在哪种文件格式(jpg、png 等)中。
您收到错误的原因是它不知道用什么编码来保存临时图像对象 (tmp)。
这是一个例子
->save('my-image.jpg', 90)
还有一个可选的第二个参数控制质量输出。以上输出质量为 90%。
您不需要在 Intervention\Image
class 上使用 save() 函数,因为您正在通过 Storage
将文件保存到 public 光盘外观。
只需替换行
$categoryImage = Image::make($image)->resize(1600,479)->save();
和
$categoryImage = Image::make($image)->resize(1600,479)->stream();
以避免必须将图像存储到扩展名为 .tmp 的临时文件夹中。 Laravel Storage
Facade 将处理由 Intervention\Image
创建的流并将文件存储到 public 磁盘。
在某处看到这个,对我有用
$image->save('foo' . $img->getClientOriginalExtension());
Laravel Intervention image save() 方法需要一个文件名,以便它知道将图像保存在什么文件格式(jpg、png 等)中
$categoryImage = Image::make($image)->resize(1600,479)->save( $imageName,90);
我已经通过
解决了这个问题
Trimming
my file path, i was using this script inside laravel Artisan Console.
$img->save(trim('public/uploads/images/thumbnails/'.$subFolder.'/'.$filename));
而是你使用流它的工作没有错误
$categoryImage = Image::make($image)->resize(1600,479)->save();
- $categoryImage = Image::make($image)->resize(1600,479)->save();
Storage::disk('public')->put('category/'.$imageName, $categoryImage);
改为
Image::make($image)->resize(1600, 479)->save(storage_path('app/public/category').'/'.$imagename);
$categorySlider = Image::make($image)->resize(500,333)->save();
Storage::disk('public')->put('category/slider/'.$imageName, $categorySlider);
改为
Image::make($image)->resize(500, 333)->save(storage_path('app/public/category/slider/') .$imagename);
我正在使用带有 Laravel 5.6 的干预包,每当我上传文件时都会遇到这个问题,我收到错误编码格式 (tmp) 不受支持。我也启用了 gdd2 扩展。这是我用过的代码。
public function store(Request $request)
{
$this->validate($request , [
'name' => 'required|unique:categories',
'description' => 'max:355',
'image' => 'required|image|mimes:jpeg,bmp,png,jpg'
]);
// Get Form Image
$image = $request->file('image');
$slug = str_slug($request->name);
if (isset($image))
{
$currentDate = Carbon::now()->toDateString();
$imageName = $slug.'-'.$currentDate.'-'.uniqid().'.'.$image->getClientOriginalExtension();
// Check if Category Dir exists
if (!Storage::disk('public')->exists('category'))
{
Storage::disk('public')->makeDirectory('category');
}
// Resize image for category and upload
$categoryImage = Image::make($image)->resize(1600,479)->save();
Storage::disk('public')->put('category/'.$imageName, $categoryImage);
// Check if Category Slider Dir exists
if (!Storage::disk('public')->exists('category/slider'))
{
Storage::disk('public')->makeDirectory('category/slider');
}
// Resize image for category slider and upload
$categorySlider = Image::make($image)->resize(500,333)->save();
Storage::disk('public')->put('category/slider/'.$imageName, $categorySlider);
}
else
{
$imageName = 'default.png';
}
$category = new Category();
$category->name = $request->name;
$category->slug = $slug;
$category->description = $request->description;
$category->image = $imageName;
$category->save();
Toastr::success('Category Saved Successfully','Success');
return redirect()->route('admin.category.index');
}
干预图像 save() 方法需要一个文件名,以便它知道将图像保存在哪种文件格式(jpg、png 等)中。
您收到错误的原因是它不知道用什么编码来保存临时图像对象 (tmp)。
这是一个例子
->save('my-image.jpg', 90)
还有一个可选的第二个参数控制质量输出。以上输出质量为 90%。
您不需要在 Intervention\Image
class 上使用 save() 函数,因为您正在通过 Storage
将文件保存到 public 光盘外观。
只需替换行
$categoryImage = Image::make($image)->resize(1600,479)->save();
和
$categoryImage = Image::make($image)->resize(1600,479)->stream();
以避免必须将图像存储到扩展名为 .tmp 的临时文件夹中。 Laravel Storage
Facade 将处理由 Intervention\Image
创建的流并将文件存储到 public 磁盘。
在某处看到这个,对我有用
$image->save('foo' . $img->getClientOriginalExtension());
Laravel Intervention image save() 方法需要一个文件名,以便它知道将图像保存在什么文件格式(jpg、png 等)中
$categoryImage = Image::make($image)->resize(1600,479)->save( $imageName,90);
我已经通过
解决了这个问题Trimming my file path, i was using this script inside laravel Artisan Console.
$img->save(trim('public/uploads/images/thumbnails/'.$subFolder.'/'.$filename));
而是你使用流它的工作没有错误
$categoryImage = Image::make($image)->resize(1600,479)->save();
- $categoryImage = Image::make($image)->resize(1600,479)->save(); Storage::disk('public')->put('category/'.$imageName, $categoryImage);
改为
Image::make($image)->resize(1600, 479)->save(storage_path('app/public/category').'/'.$imagename);
$categorySlider = Image::make($image)->resize(500,333)->save();
Storage::disk('public')->put('category/slider/'.$imageName, $categorySlider);
改为
Image::make($image)->resize(500, 333)->save(storage_path('app/public/category/slider/') .$imagename);