laravel9 使用 intervention/image 实现图片上传功能代码
时间: 2024-02-18 21:00:01 浏览: 25
首先,你需要在 Laravel 项目中安装 intervention/image 库。可以通过 Composer 命令来安装:
```
composer require intervention/image
```
安装完成后,你可以在控制器中编写以下代码来实现图片上传功能:
```php
use Illuminate\Http\Request;
use Intervention\Image\Facades\Image;
public function upload(Request $request)
{
$image = $request->file('image');
$filename = time() . '.' . $image->getClientOriginalExtension();
$path = public_path('uploads/' . $filename);
// 裁剪并保存图片
Image::make($image->getRealPath())->resize(200, 200)->save($path);
return response()->json(['status' => 'success', 'url' => '/uploads/' . $filename]);
}
```
这段代码做了以下几件事:
1. 从 Request 中获取上传的图片文件;
2. 生成文件名,并保存到 Laravel 项目的 public/uploads 目录下;
3. 使用 intervention/image 库对图片进行裁剪,并保存到指定位置;
4. 返回上传成功的 JSON 响应,包括上传后的图片 URL。
最后,你需要在 Blade 模板中添加表单以及 JavaScript 代码来实现图片上传功能。可以参考以下代码:
```html
<form id="upload-form" enctype="multipart/form-data">
<input type="file" name="image" id="image-input">
<button type="submit">上传图片</button>
</form>
<script>
$(function() {
$('#upload-form').submit(function(e) {
e.preventDefault();
var formData = new FormData($(this)[0]);
$.ajax({
url: '/upload',
type: 'POST',
data: formData,
processData: false,
contentType: false,
success: function(data) {
console.log(data);
// 处理上传成功后的逻辑
},
error: function(xhr, status, error) {
console.error(error);
// 处理上传失败后的逻辑
}
});
});
});
</script>
```
这段代码做了以下几件事:
1. 显示一个包含文件上传表单的 HTML 表单;
2. 在表单提交时,使用 jQuery.ajax() 方法发送 POST 请求;
3. 将表单数据封装成 FormData 对象,并设置 processData 和 contentType 选项为 false;
4. 在上传成功时,处理服务器返回的 JSON 响应,例如显示上传的图片。