ホームページ  >  記事  >  バックエンド開発  >  PHP 開発フレームワーク Yii Framework チュートリアル (15) UI コンポーネント MultiFileUpload の例

PHP 開発フレームワーク Yii Framework チュートリアル (15) UI コンポーネント MultiFileUpload の例

黄舟
黄舟オリジナル
2017-01-21 10:20:591287ブラウズ

CMultiFileUpload はファイルのアップロードに使用され、一度に複数のファイルのアップロードをサポートします。この UI コンポーネントは、jQuery Multi File Upload プラグインに基づいています。 Yii の組み込み UI コンポーネントの多くは JQuery に基づいているため、動的に生成された JavaScript などを保存するためのアセット ディレクトリを作成する必要があります。

アップロードされたファイル情報は、$_FILES[widget-name] を通じてアクセスできます。たとえば、CMultiFileUpload の名前は「files」で、アップロードされたファイル情報は $_FILES['files'] を通じてアクセスできます。さらに、CMultiFileUpload を含む Form 属性には enctype=multipart/form-data を設定する必要があります。

この例では、アップロードされたファイルを保存するアップロード ディレクトリを作成します。構成ファイル設定を通じて、アップロードされたファイルをディレクトリにインポートします。

/config/main.phpを変更してプロジェクトコードを追加します

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

パラメータを保存するファイルはconfig/param.phpです

ファイルをアップロードするディレクトリを次のように定義します:

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

コード::app()->params['uploadDir'] で Yii を使用して、このパラメータにアクセスできます。この簡単な例では、アプリケーション パラメータの params を定義せずに、upload/ を固定定数として直接使用することもできます。

この例では、View を次のように定義します:

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'));?>

CMultiFileUpload を使用して、拡張子 jpg|png のファイルをアップロードします。詳細については、

を参照してください。対応するコントローラー/アクションを変更します。

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('.', '..'));
}
}

Action メソッドは、まずアップロード ディレクトリ内のファイルを削除し、次にアップロードされたファイルをこのディレクトリに保存します。

PHP 開発フレームワーク Yii Framework チュートリアル (15) UI コンポーネント MultiFileUpload の例

上記は、PHP 開発フレームワーク Yii Framework チュートリアル (15) UI コンポーネント MultiFileUpload の例の内容です。その他の関連コンテンツについては、PHP 中国語 Web サイト (www.php.cn) に注目してください。


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。