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

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

黄舟
リリース: 2023-03-05 07:40:01
オリジナル
1446 人が閲覧しました

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 までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート