PHPackages                             zgldh/laravel-upload-manager - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [File &amp; Storage](/categories/file-storage)
4. /
5. zgldh/laravel-upload-manager

ActiveLibrary[File &amp; Storage](/categories/file-storage)

zgldh/laravel-upload-manager
============================

Upload, validate, storage, manage by API for Laravel 5/6/7/8/9

v0.7.0(4y ago)795.6k10[1 issues](https://github.com/zgldh/laravel-upload-manager/issues)2MITPHPCI failing

Since Aug 27Pushed 4y ago5 watchersCompare

[ Source](https://github.com/zgldh/laravel-upload-manager)[ Packagist](https://packagist.org/packages/zgldh/laravel-upload-manager)[ RSS](/packages/zgldh-laravel-upload-manager/feed)WikiDiscussions master Synced today

READMEChangelog (10)Dependencies (1)Versions (13)Used By (2)

laravel-upload-manager
======================

[](#laravel-upload-manager)

通过API对文件进行“上传、验证、储存、管理”操作。 Upload, validate, storage, manage by API for Laravel 5/6/7/8/9

依赖 Requirement
--------------

[](#依赖-requirement)

1. Laravel &gt;= 6.0
2. For Laravel 5, Please use `composer require zgldh/laravel-upload-manager 0.6`

安装 Install
----------

[](#安装-install)

1. composer require zgldh/laravel-upload-manager
2. `config/app.php` `'providers' => [ 'zgldh\UploadManager\UploadManagerServiceProvider']`
3. php artisan vendor:publish --provider="zgldh\\UploadManager\\UploadManagerServiceProvider"
4. php artisan migrate
5. Done

用法 Usage
--------

[](#用法-usage)

1. 上传一个文件 Upload and store a file.

    ```

        use zgldh\UploadManager\UploadManager;

        class UploadController extend Controller
        {
            public function postUpload(Request $request)
            {
                $file = $request->file('avatar');
                $manager = UploadManager::getInstance();
                $upload = $manager->upload($file);
                $upload->save();
                return $upload;
            }
        }
    ```
2. 从一个URL获取并保存文件 Fetch and store a file from a URL

    ```

        use zgldh\UploadManager\UploadManager;

        class UploadController extend Controller
        {
            public function postUpload(Request $request)
            {
                $fileUrl = $request->input('url');
                $manager = UploadManager::getInstance();
                $upload = $manager->upload($fileUrl);
                $upload->save();
                return $upload;
            }
        }
    ```
3. 更新一个上传对象 Update a upload object

    ```

        use App\Upload;
        use zgldh\UploadManager\UploadManager;

        class UploadController extend Controller
        {
            public function postUpload(Request $request)
            {
                $uploadId = $request->input('id');
                $file = $request->file('avatar');

                $manager = UploadManager::getInstance();
                $upload = Upload::find($uploadId);
                if($manager->update($upload, $file))
                {
                    $upload->save();
                    return $upload;
                }
                return ['result'=>false];
            }
        }
    ```
4. 用从一个URL获取到的文件来更新一个上传对象 Update a upload object from a URL

    ```

        use App\Upload;
        use zgldh\UploadManager\UploadManager;

        class UploadController extend Controller
        {
            public function postUpload(Request $request)
            {
                $uploadId = $request->input('id');
                $fileUrl = $request->input('url');

                $manager = UploadManager::getInstance();
                $upload = Upload::find($uploadId);
                if($manager->update($upload, $fileUrl))
                {
                    $upload->save();
                    return $upload;
                }
                return ['result'=>false];
            }
        }
    ```
5. 数据验证 Validation

    ```
        use zgldh\UploadManager\UploadManager;

        class UploadController extend Controller
        {
            public function postUpload(Request $request)
            {
                $file = $request->file('avatar');
                $manager = UploadManager::getInstance();
                $upload = $manager->withValidator('image')->upload($file);    //加上验证组

                if($upload)
                {
                    $upload->save();
                    return $upload;
                }
                else
                {
                    $errorMessages = $manager->getErrors();                   //得到所有错误信息
                    $errorMessage = $manager->getFirstErrorMessage();         //得到第一条错误信息
                    throw new \Exception($errorMessage);
                }
            }
        }
    ```
6. 存到别的Disk里面

    ```
        use zgldh\UploadManager\UploadManager;

        class UploadController extend Controller
        {
            public function postUpload(Request $request)
            {
                $file = $request->file('avatar');
                $manager = UploadManager::getInstance();
                $upload = $manager
                    ->withValidator('image')
                    ->withDisk('qiniu')         // 储存到七牛磁盘里
                    ->upload($file);
                $upload->save();
                return $upload;
            }
        }
    ```
7. 上传前修改`$upload` 对象

    ```
        use zgldh\UploadManager\UploadManager;

        class UploadController extend Controller
        {
            public function postUpload(Request $request)
            {
                $file = $request->file('avatar');
                $manager = UploadManager::getInstance();
                $upload = $manager
                    ->withValidator('image')
                    ->withDisk('localhost')         // 默认存到本地
                    ->upload($file, function($upload){
                        if($upload->size > 1024*1024)
                        {
                            $upload->disk = 'qiniu';// 超过1兆的文件都放到七牛里。
                        }
                        return $upload;
                    });
                $upload->save();
                return $upload;
            }
        }
    ```
8. 删除某用户上传后，却一直没有使用的`avatar`类型的`$upload` 对象

    ```
        use zgldh\UploadManager\UploadManager;

        class UploadController extend Controller
        {
            public function clearUnUsed(Request $request)
            {
                $currentUser = $request->user();
                $manager = UploadManager::getInstance();
                $manager->removeUnUsedUploads($currentUser, 'avatar');
            }
        }
    ```

配置 Configuration
----------------

[](#配置-configuration)

1. `config/upload.php`

    请查看源文件注释
2. `App\Upload`

    可以在里面写自己喜欢的函数
3. `UploadStrategy.php`

    通常需要你亲自扩展一个出来。如：

    ```
