pfrug/file-upload

用于在Laravel模型中管理上传图片的特性

v1.0.0 2023-07-26 21:54 UTC

This package is auto-updated.

Last update: 2024-09-30 02:05:27 UTC


README

简化Laravel中图片上传的特质

安装

composer require pfrug/file-upload 1.0
// config/app.php
'providers' => [
    ...
    Pfrug\FileUpload\FileUploadServiceProvider::class,
];

使用

在你的模型中实现HasImageUploads
指定类型为文件的字段

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;
use Pfrug\FileUpload\Traits\HasImageUploads;

class Post extends Model
{
    use HasImageUploads;

    protected $uploadableImages = [
        'image',
        'thumb'
    ];

在控制器中不需要指定任何内容。
仅使用fillcreate方法即可正确保存图片

public function store(Request $request)
{    
    // ... you code here, try-catch validate etc..
    Post::create($request->all());
    ...


public function update(Request $request, Post $post)
    // ... you code here, try-catch, validate data, etc..
    $post->fill($request->all());
    $post->save();

或者直接分配

$post->title = $request->title ;
$post->image = $request->file('image');
$post->save();

视图

如果你愿意,可以使用默认视图

    @include('fileupload::imageField', [
            'item' => $post,
            'field' => 'image',
            'cant_delete' => true
        ])

配置

php artisan vendor:publish --tag="fileupload-assets" --provider="Pfrug\FileUpload\FileUploadServiceProvider"
php artisan vendor:publish --tag="fileupload-lang" --provider="Pfrug\FileUpload\FileUploadServiceProvider"
php artisan vendor:publish --tag="fileupload-views" --provider="Pfrug\FileUpload\FileUploadServiceProvider"

以下命令创建文件到

"fileupload-assets"
{project}resources/css/vendor/fileupload/file-upload.css
{project}resources/js/vendor/fileupload/file-upload.js
{project}resources/img/vendor/fileupload/default.png

"fileupload-lang"
{project}resources/lang/{en-es}/fileupload.php

"fileupload-views"
{project}resources/view/vendor/fileupload/imageField.blade.php

图片存储

图片将保存在文件夹storage/app/public/{model}
创建符号链接很重要,可以使用命令php artisan storage:link完成

文件路径将保存在数据库中,因此建议它是一个varchar(100)类型的字段
例如:posts/9c744648c08730cd850c4d7dad9b998d.jpg

许可证

MIT许可证(MIT)。请参阅许可证文件以获取更多信息。