Yii2 webuploader(Yii2大文件分片上传扩展)

作者:JAY 2019-07-01

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

github:https://github.com/oonne/yii2-webuploader


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,
      ];  
    }
  }
}


The following is Chinese translation.(以下是中文翻译



简介

基于Webuploader 的Yii2大文件上传扩展。Webuploader 是由Baidu WebFE(FEX)团队开发的一个简单的以HTML5为主,FLASH为辅的现代文件上传组件,支持图片上传和文件上传。本扩展仅实现大文件分片上传功能。超大文件在前端自动分成许多小文件,分别上传到服务端,再重新合成大文件,从而实现超大文件的上传。


github:https://github.com/oonne/yii2-webuploader


安装

通过composer安装。

执行以下命令:

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


或者把以下内容添加到composer.json中:

"oonne/yii2-webuploader": "*"



使用

在需要用到上传组件的view中添加以下代码:

<?php use oonne\webuploader\Upload; ?>
<?= Upload::widget(['url'=>'/upload/upload']) ?>

其中,"url"参数中填写上传组件对应的服务端地址。(即你准备用来接收上传文件的controller对应的地址)。


然后编写controller代码如下:

<?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,
      ];  
    }
  }
}

UploadServer::uploadFile的入参说明:

出参说明:


补充说明:


TOP