erlandmuchasaj/laravel-file-uploader

一个简单的包,帮助您轻松地将文件上传到Laravel项目。

1.1.3 2024-09-17 15:33 UTC

This package is auto-updated.

Last update: 2024-09-17 15:34:10 UTC


README

Laravel File Uploader 提供了一种简单的方法来将文件上传到不同的磁盘。该包的主要目的是移除重复和繁琐的代码,并将其简化为一些简单的方法。

安装

您可以通过Composer安装此包

composer require erlandmuchasaj/laravel-file-uploader

用法

此包具有非常简单直接的用法。只需导入包,并将文件作为参数传递,它将处理其余操作。

use ErlandMuchasaj\LaravelFileUploader\FileUploader;

Route::post('/files', function (\Illuminate\Http\Request $request) {

    $max_size = (int) ini_get('upload_max_filesize') * 1000;
    
    // FileUploader::images() get all image extensions ex: jpg, png, jpeg, gif, etc.
    // FileUploader::documents() get all documents extensions ex: 'csv', 'html', 'pdf', 'doc', 'docx', 'ppt' etc.
    $extensions = implode(',', FileUploader::images());

    $request->validate([
        'file' => [
            'required',
            'file',
            'image',
            'mimes:' . $extensions,
            'max:'.$max_size,
        ]
    ]);

    $file = $request->file('file');

    $response = FileUploader::store($file);
    // $response = FileUploader::store($file, $options);
    // available options (as key=>value pare) are:
    // `disk`, 'user_id`, `path`, `visibility`
    
    // do something with the $response
    // you can save it into your model etc.
    
    return redirect()
            ->back()
            ->with('success', __('File has been uploaded.'))
            ->with('file', $response);
})->name('files.store');

/**
 *  $response = [
 *      "type" => "image"
 *      "extension" => "png"
 *      "_extension" => "png"
 *      "name" => "blog3"
 *      "original_name" => "blog3.png"
 *      "size" => 549247
 *      "mime_type" => "image/png"
 *      "dimensions" => "670x841"
 *      "path" => "uploads/1/image/blog3_1678118034.png" // <==
 *      "url" => "/storage/uploads/1/image/blog3_1678118034.png"
 *      "user_id" => 1
 *      "disk" => "local"
 *      "visibility" => "public"
 *      "uuid" => "dd5889c0-5057-49ef-a6ef-e3da961a47d1"
 *  ]
*/

如果您需要修改配置文件,应使用以下命令发布迁移和config/permission.php配置文件:

php artisan vendor:publish --provider="ErlandMuchasaj\LaravelFileUploader\FileUploaderServiceProvider"

一些其他辅助方法

    $path = 'uploads/1/image/blog3_1678118034.png'; // the path of the image where is stored.
    $response = FileUploader::get($path); // get file as StreamedResponse
    $response = FileUploader::getFile($path); // get file as content.
    $response = FileUploader::url($path); // full path url - /storage/uploads/1/image/blog3_1678118034.png
    $response = FileUploader::path($path); // C:\wamp\www\laravel-app\storage\app\uploads/1/image/blog3_1678118034.png
    $response = FileUploader::meta($path); // metadata about the file.
    /**
    * [
    *     "path" => "C:\wamp\www\laravel-app\storage\app\uploads/1/image/blog3_1678118034.png"
    *     "url" => "/storage/uploads/1/image/blog3_1678118034.png"
    *     "visibility" => "public"
    *     "mimeType" => "image/png"
    *     "size" => "536.37 KB"
    *     "last_modified" => "1 hour ago"
    *     "name" => "blog3_1678118034.png"
    *     "pathinfo" => [
    *         "dirname" => "uploads/1/image"
    *         "basename" => "blog3_1678118034.png"
    *         "extension" => "png"
    *         "filename" => "blog3_1678118034"
    *     ]
    * ]
    */
        
    $response = FileUploader::download($path, 'something_nice'); // download the file as StreamedResponse
    $response = FileUploader::getVisibility($path); // file visibility when applicable private/public
    $response = FileUploader::setVisibility($path, 'private'); // change file visibility
    $response = FileUploader::remove($path); // delete a file

此外,还提供了一些其他尺寸转换辅助函数,例如

    $size = 549247;
    FileUploader::formatBytes($size); // "536.37 KB"
    
    FileUploader::convertBytesToSpecified($size, 'KB'); // 536.37KB
    FileUploader::convertBytesToSpecified($size, 'MB'); // 0.52MB

支持我

我在创建一流的开源软件包上投入了大量的时间和资源。

如果您觉得这个包很有帮助,可以通过点击下面的按钮并捐赠一些金额来支持我,帮助我经常在这些项目上工作。

buy me a coffee

变更日志

有关最近更改的更多信息,请参阅CHANGELOG

贡献

有关详细信息,请参阅CONTRIBUTING

安全漏洞

有关详细信息,请参阅SECURITY

鸣谢

许可

MIT许可(MIT)。有关更多信息,请参阅许可文件