oonne/yii2-webuploader

Yii2 extension for large file chunk upload. Base on WebUploader.

Installs: 163

Dependents: 0

Suggesters: 0

Security: 0

Stars: 3

Watchers: 1

Forks: 0

Open Issues: 1

Type:yii2-extension

1.0.4 2019-06-28 03:04 UTC

This package is auto-updated.

Last update: 2024-05-28 15:06:41 UTC


README

Yii2 extension for large file chunk upload. Base on WebUploader.

基于Webuploader 的Yii2大文件上传扩展。Webuploader 是由Baidu WebFE(FEX)团队开发的一个简单的以HTML5为主,FLASH为辅的现代文件上传组件,支持图片上传和文件上传。本扩展仅实现大文件分片上传功能。

Installation

The preferred way to install this extension is through composer.

Either run

php composer.phar require --prefer-dist oonne/yii2-webuploader "*"

or add

"oonne/yii2-webuploader": "*"

to the require section of your composer.json file.

Usage

  • Add Upload widget in the view, for example:
<?php use oonne\webuploader\Upload; ?>
<?= Upload::widget(['url'=>'/upload/upload']) ?>

Enter the service processing path in "url";

  • Add a upload controller, for example:
<?php
namespace backend\controllers;

use Yii;
use yii\web\Response;
use yii\web\UploadedFile;
use oonne\webuploader\UploadServer;

class UploadController extends \yii\rest\Controller
{
    public function behaviors()
    {
        $behaviors = parent::behaviors();
        $behaviors['contentNegotiator']['formats'] = [
            'application/json' => Response::FORMAT_JSON
        ];
        return $behaviors;
    }

    protected function verbs()
    {
        return [
            'upload' => ['post'],
        ];
    }

    public function actionUpload()
    {
        $fileData = Yii::$app->request->post();
        $file = UploadedFile::getInstanceByName('file');
        $fileRet = UploadServer::uploadFile($file, $fileData, Yii::$app->params['temppath'], Yii::$app->params['filepath']);

        if ($fileRet['ret'] == 0) {
            return [
                'Ret' => 0,
                'Filename' => $fileRet['file_name'],
                'Url' => '$downloadUrl',
                'Callback' => 'location.reload(true)',
            ];
        } else {
            return [
                'Ret' => 1000,
            ];    
        }
    }
}