recca0120/upload

支持Ajax上传大文件,jQuery-File-Upload, FileApi, Plupload,适用于Laravel框架

v2.2.0 2024-04-11 07:55 UTC

README

Donate

纯Ajax上传,适用于Laravel(支持jQuery-File-Upload, FileApi, Plupload)

StyleCI Build Status Total Downloads Latest Stable Version Latest Unstable Version License Monthly Downloads Daily Downloads Scrutinizer Code Quality Code Coverage

特性

  • 支持分块上传 jQuery-File-Upload $driver = 'fileapi';
  • 支持分块上传 Dropzone $driver = 'dropzone';
  • 支持分块上传 FileApi $driver = 'fileapi';
  • 支持分块上传 Fine Uploader $driver = 'fine-uploader';
  • 支持分块上传 Plupload $driver = 'plupload';
  • 支持分块上传 Filepond $driver = 'filepond'

安装

要获取Laravel Exceptions的最新版本,只需使用Composer引入项目

composer require recca0120/upload

Laravel

发布

artisan vendor:publish --provider="Recca0120\Upload\UploadServiceProvider"

如何使用

控制器

use Illuminate\Http\JsonResponse;
use Illuminate\Http\UploadedFile;
use Recca0120\Upload\UploadManager;

class UploadController extends Controller
{
    public function upload(UploadManager $manager)
    {
        $driver = 'plupload'; // or 'fileapi'
        $inputName = 'file'; // $_FILES index;

        return $manager->driver($driver)->receive($inputName);

        // or
        return $manager
            ->driver($driver)
            ->receive($inputName, function (UploadedFile $uploadedFile, $path, $domain, $api) {
                $filename = $uploadedFile->getBasename();

                return new JsonResponse([
                    'name' => $uploadedFile->getClientOriginalName(),
                    'tmp_name' => $path.$filename,
                    'type' => $uploadedFile->getMimeType(),
                    'size' => $uploadedFile->getSize(),
                    'url' => $domain.$path.$filename,
                ]);
            });
    }
}

工厂

use Recca0120\Upload\Receiver;
use Illuminate\Http\JsonResponse;

require __DIR__.'/vendor/autoload.php';

$config = [
    'chunks' => 'path_to_chunks',
    'storage' => 'path_to_storage',
    'domain' => 'http://app.dev/',
    'path' => 'web_path'
];

Receiver::factory($config, 'fileapi')->receive('file')->send();

独立

use Recca0120\Upload\Drivers\FileAPI;
use Recca0120\Upload\Receiver;

require __DIR__.'/vendor/autoload.php';

$config = [
    'chunks' => 'path_to_chunks',
    'storage' => 'path_to_storage',
    'domain' => 'http://app.dev/',
    'path' => 'web_path'
];

// if use Plupload, new Recca0120\Upload\Plupload
$receiver = new Receiver(new FileAPI($config));
// save to $config['storage'];
$receiver->receive('file')->send();