支持Ajax上传大文件,jQuery-File-Upload,FileApi,Plupload,支持Laravel 5框架,从https://github.com/recca0120/upload分支而来

v1.7.3 2018-03-23 08:24 UTC

README

Donate

纯Ajax上传,支持Laravel 5(支持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

特性

安装

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

composer require recca0120/upload

当然,您也可以手动更新require块并运行composer update,如果您选择这样做

{
    "require": {
        "recca0120/upload": "^1.7"
    }
}

Laravel 5

config/app.php中包含服务提供者。服务提供者对于生成Artisan命令是必需的。

'providers' => [
    ...
    Recca0120\Upload\UploadServiceProvider::class,
    ...
];

发布

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

如何使用

控制器

use Illuminate\Http\JsonResponse;
use Yaojinhui1993\Upload\UploadManager;
use Symfony\Component\HttpFoundation\File\UploadedFile;

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) {
                $clientOriginalName = $uploadedFile->getClientOriginalName();
                $clientOriginalExtension = strtolower($uploadedFile->getClientOriginalExtension());
                $basename = pathinfo($uploadedFile->getBasename(), PATHINFO_FILENAME);
                $filename = md5($basename).'.'.$clientOriginalExtension;
                $mimeType = $uploadedFile->getMimeType();
                $size = $uploadedFile->getSize();
                $uploadedFile->move($path, $filename);
                $response = [
                    'name' => pathinfo($clientOriginalName, PATHINFO_FILENAME).'.'.$clientOriginalExtension,
                    'tmp_name' => $path.$filename,
                    'type' => $mimeType,
                    'size' => $size,
                    'url' => $domain.$path.$filename,
                ];

                return new JsonResponse($response);

            });
    }
}

工厂

use Yaojinhui1993\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'
];

$inputName = 'file';
$storagePath = 'relative path';
$api = 'fileapi'; // or plupload

Receiver::factory($config, $api)->receive($inputName)->send();

独立

use Yaojinhui1993\Upload\Receiver;
use Yaojinhui1993\Upload\FileAPI;
use Yaojinhui1993\Upload\Plupload;
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'
];

$inputName = 'file';
$storagePath = 'relative path';

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