uploadify是來自國外的一款優秀jquery插件,主要功能是批量上傳文件
下載Uploadify控件可以到git網站上找,找到自己適合用的.例如我們下面用個就是從
https://github.com/xjflyttp/yii2-uploadify-widget 下載的,里面也有詳細的操作文檔。 ? (推薦學習:yii教程)
① 配置composer.json (就存在網站根目錄下),找到require,然后添加我們的uploadify
"require":?{ "php":?">=5.4.0", "yiisoft/yii2":?">=2.0.6", "yiisoft/yii2-bootstrap":?"*", "yiisoft/yii2-swiftmailer":?"*", "xj/yii2-uploadify-widget":?"~2.0.0"?//這里是新添加的 },
② 利用composer 將yii2-uploadify-widget 下載到我們網站, 打開在網站根目錄運行命令行 ,等待下載如圖:
③ 視圖的處理
<?php use yiiwebJsExpression; //外部TAG echo Html::fileInput('test', NULL, ['id' =>?'test']); echo?Uploadify::widget([ ????'url'?=>?yiihelpersUrl::to(['s-upload']), ????'id'?=>?'test',?//需要跟上fileInput?的id?對應 ????'csrf'?=>?true, ????'renderTag'?=>?false, ?????'jsOptions'?=>?[ ??????????????????'width'?=>?100, ??????????????????'height'?=>?40, ??????????????????'onUploadError'?=>?new?JsExpression(?new?JsExpression(<p>④?配置Controller 層</p><pre class="brush:html;toolbar:false"><?php namespace backendcontrollers; use xjuploadifyUploadAction; class TestController extends yiiwebController { public function actions() { return [ 's-upload' =>?[ ????????????'class'?=>?UploadAction::className(), ????????????//磁盤目錄 ????????????'basePath'?=>?'@webroot/upload', ????????????//訪問目錄 ????????????'baseUrl'?=>?'@web/upload', ????????????//防止跨站攻擊 ????????????'enableCsrf'?=>?true,?//?default ????????????'postFieldName'?=>?'Filedata',?//?default ????????????//BEGIN?METHOD ????????????'format'?=>?[$this,?'methodName'], ????????????//END?METHOD ????????????//BEGIN?CLOSURE?BY-HASH ????????????//是否覆蓋相同文件 ????????????'overwriteIfExist'?=>?true, ????????????//創建圖片名稱 ????????????'format'?=>?function?(UploadAction?$action)?{ ????????????????$fileext?=?$action->uploadfile->getExtension(); ????????????????$filename?=?sha1_file($action->uploadfile->tempName); ????????????????return?"{$filename}.{$fileext}"; ????????????}, ?????????????//想要多調用這個函數 ????????????'format'?=>?function?(UploadAction?$action)?{ ????????????????$fileext?=?$action->uploadfile->getExtension(); ????????????????$filehash?=?sha1(uniqid()?.?time()); ????????????????$p1?=?substr($filehash,?0,?2); ????????????????$p2?=?substr($filehash,?2,?2); ????????????????return?"{$p1}/{$p2}/{$filehash}.{$fileext}"; ????????????}, ????????????*/ ????????????'validateOptions'?=>?[ ????????????????'extensions'?=>?['jpg',?'png'],?//后綴驗證 ????????????????'maxSize'?=>?1?*?1024?*?1024,?//上傳大小限制 ?????????????], ?????????????//驗證前處理 ????????????'beforeValidate'?=>?function?(UploadAction?$action)?{ ????????????????//throw?new?Exception('test?error'); ????????????????}, ?????????????//驗證后處理 ????????????'afterValidate'?=>?function?(UploadAction?$action)?{}, ?????????????//保存前處理 ????????????'beforeSave'?=>?function?(UploadAction?$action)?{}, ????????????//保存后處理 ????????????'afterSave'?=>?function?(UploadAction?$action)?{ ????????????????//$action->output?返回給瀏覽器的數據 ????????????????//返回Url?圖片返回的路徑 ????????????????//$action->getWebUrl() ????????????????//圖片的名稱 ????????????????//$action->getFilename(); ????????????????//保存圖片的物理位置 ????????????????//$action->getSavePath(); ????????????????//輸出????????????????????????????????? ????????????????//$action->output['fileUrl']?=?$action->getWebUrl(); ????????????????//$action->output['fileName']?=?$action->getFilename(); ????????????????//$action->output['filePath']?=?$action->getSavePath(); ????????????????//$action->getFilename();?//?"image/yyyymmddtimerand.jpg" ????????????????//$action->getWebUrl();?//??"baseUrl?+?filename,?/upload/image/yyyymmddtimerand.jpg" ?????????????????//$action->getSavePath();?//?"/var/www/htdocs/upload/image/yyyymmddtimerand.jpg" ????????????????$action->output[‘fileUrl’]?=?$action->getWebUrl() ??????????????}, ???????????], ????????]; ?????} ???} ?>
? 版權聲明
文章版權歸作者所有,未經允許請勿轉載。
THE END