Home  >  Article  >  Backend Development  >  PHP development framework Yii Framework tutorial (15) UI component MultiFileUpload example

PHP development framework Yii Framework tutorial (15) UI component MultiFileUpload example

黄舟
黄舟Original
2017-01-21 10:20:591288browse

CMultiFileUpload is used to upload files and supports uploading multiple files at one time. This UI component is based on the jQuery Multi File Upload plugin. Many of Yii's built-in UI components are based on JQuery, so you need to create an assets directory to store dynamically generated javascripts, etc.

The uploaded file information can be accessed through $_FILES[widget-name]. For example, the name of CMultiFileUpload is "files" and the uploaded file information can be accessed through $_FILES['files']. In addition, the Form attribute containing CMultiFileUpload needs to set enctype=multipart/form-data.

This example creates an upload directory to store uploaded files. We import the uploaded files into the directory through the configuration file settings.

Modify/config/main.php and add project code

// application-level parameters that can be accessed
// using Yii::app()->params['paramName']
'params'=>require(dirname(__FILE__).'/params.php'),

Add some parameters to the Application. The file to store the parameters is config/param.php

Define the directory for uploading files As follows:

// this contains the application parameters that can be
maintained via GUIreturn array(//upload directory'uploadDir' => 'upload/',);

You can access this parameter in the code through Yii::app()->params['uploadDir']. For this simple example, you can also directly use upload/ as a fix. Constants without defining Application parameter params.

There is no need to use Model in this example. We define View as follows:

beginWidget('CActiveForm',array('method' =>'post','htmlOptions'=>array('enctype'=>'multipart/form-data'),)); 
?>
widget('CMultiFileUpload',array('name'=>'files','accept'=>'jpg|png','max'=>3,'remove'=>'Remove',//'denied'=>'', 
message that is displayed when a file type is not allowed//'duplicate'=>'', 
message that is displayed when a file appears twice'htmlOptions'=>array('size'=>25),)); 
?>endWidget(); 
?>
findFiles() as $filename): ?>
Yii::app()->baseUrl.'/'.Yii::app()->params['uploadDir'].$filename,array('rel'=>'external'));?>

Use CMultiFileUpload to upload files with the extension jpg|png. CMultiFileUpload can define some options through configuration. For details, please refer to

Modify its corresponding Controller/Action.

class SiteController extends CController
{
/**
* Index action is the default action in a controller.
*/
public function actionIndex()
{
if(isset($_FILES['files']))
{
// delete old files
foreach($this->findFiles() as $filename)
unlink(Yii::app()->params['uploadDir'].$filename);
//upload new files
foreach($_FILES['files']['name'] as $key=>$filename)
move_uploaded_file($_FILES['files']['tmp_name'][$key],
Yii::app()->params['uploadDir'].$filename);
}
$this->render('index');
}
/**
* @return array filename
*/
public function findFiles()
{
return array_diff(scandir(Yii::app()->params['uploadDir']),
array('.', '..'));
}
}

The Action method first deletes the files in the upload directory, and then stores the uploaded files in the directory.

PHP development framework Yii Framework tutorial (15) UI component MultiFileUpload example

The above is the content of the PHP development framework Yii Framework tutorial (15) UI component MultiFileUpload example. For more related content, please pay attention to the PHP Chinese website (www.php.cn)!


Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn