brediweb / imagemupload
用于 Laravel 的图像上传包
Requires
- php: ^7.1.3
- intervention/image: ^2.4
This package is not auto-updated.
Last update: 2024-09-28 11:57:26 UTC
README
您的贡献有助于维护此包和创建许多其他包。请用心♥
Laravel 图像上传
在 Laravel 中更容易上传图像
此包简化了图像的上传和渲染,您无需创建文件夹和符号链接。上传图像并调整到网站所需的多种尺寸。
它能为您做什么
- 将图像发送到非公开文件夹
- 自动创建图像文件夹
- 调整到任何所需的尺寸
- 渲染图像并隐藏原始文件夹
安装
需要 Laravel >= 5.5 和 PHP 7.1
composer require brediweb/imagemupload
使用示例
例如,不要加载一个 1200x1200 像素的图像来显示一个 100x100 像素的缩略图。更好的选择是保留多个尺寸的图像。示例
发送图像
步骤 #1 在您的 HTML 表单中
<!--Para enviar apenas uma imagem--> <input type="file" name="user" />
步骤 #2 在您的 Controller 中放置配置
use Brediweb\ImagemUpload\ImagemUpload; public function __construct() { $this->user = [ 'input_file' => 'user', //nome do input 'destino' => 'users/', //Pasta que será criada automáticamente dentro de storage/app/public/ 'resolucao' => ['p' => ['h' => 200, 'w' => 200], 'm' => ['h' => 400, 'w' => 400], ...] //Não há limites de quantos tamanhos podem ser configuradas. ]; } public function store(Request $request) { $input = $request->all(); $imagens = ImagemUpload::salva($this->user); //retorno: image-example_3fc5ac232a6e60a10ca20a90350954a9.jpg if ($imagens) { // a função retorna o novo nome da imagem. guarde em seu banco de dados. $input['imagem'] = $imagens; } }
此包将在 users/ 内创建 p 和 m 文件夹
storage/app/public/users/p/image-example_3fc5ac232a6e60a10ca20a90350954a9.jpg
200X200 像素的图像
storage/app/public/users/m/image-example_3fc5ac232a6e60a10ca20a90350954a9.jpg
400x400 像素的图像
步骤 #3 渲染图像
<img src="{{ route('imagem.render', 'users/p/' . $user->imagem) }}" />
注意:使用 'imagem.render' 路由来渲染图像,后跟文件夹名称(users)和尺寸(p、m 等)。
删除图像
在您的 Controller 中
public function destroy($id) { $user = User::find($id); $imagem = $user->imagem; $this->user['imagem'] = $imagem; // acrescente ao array o indice "imagem", e como valor, o nome da imagem. $user->delete(); if (!empty($imagem)) { ImagemUpload::deleta($this->user); // $this->user é o array com todas as configurações de envio de imagens. } return redirect()->route('users.list')->with('msg', 'registro excluido com sucesso!'); }
注意: $this->user 是包含您的图像发送配置的数组。函数 delete() 将删除其各自文件夹中的所有图像。
发送多个图像
如果您想发送多个图像,非常简单:步骤 #1 在您的 HTML 表单中
<input type="file" name="galeria[]" multiple />
步骤 #2 在您的 Controller 中放置配置
use Brediweb\ImagemUpload\ImagemUpload; public function __construct() { $this->galeria = [ 'input_file' => 'galeria', //nome do input 'destino' => 'galeria/', 'resolucao' => ['p' => ['h' => 200, 'w' => 200], 'm' => ['h' => 400, 'w' => 400], ...] ]; } public function store(Request $request) { $input = $request->all(); $imagens = ImagemUpload::salva($this->galeria); /* $imagens retorna: array ( image-example_3fc5ac232a6e60a10ca20a90350954a9.jpg, image-example_3fc5ac232a6e60a10ca20a90350954a9.jpg ) */ if ($imagens) { // guarde o nome das imagens em seu banco de dados $input['imagens'] = $imagens; } }
注意:发送多个图像时,您将收到包含新图像名称的数组。
仅移动一个图像并保持原始尺寸
$this->user = [ 'input_file' => 'user', 'destino' => 'users/' ];
调整图像尺寸并保留原始图像
$this->user = [ 'input_file' => 'user', 'destino' => 'users/', 'resolucao' => ['p' => ['h' => 200, 'w' => 200], 'm' => ['h' => 400, 'w' => 400], 'pasta_original'] // Apenas coloque o nome do indice que será o nome da pasta com as imagens originais. ];
更多详细信息将添加到本文档中。如有任何疑问,请联系。