YII2.0的文件上传, 并把文件名称重新编译
来源:互联网 发布:闪电下单软件 编辑:程序博客网 时间:2024/06/01 08:03
/**
*@Action 文件上传示例
*@这里我们演示的是一个YII2.0的文件上传, 并把文件名称重新编译
*@我们上传的是一个叫 photo 的jpg和png格式的文件
Models模型层
VIEWS视图层
*@Action 文件上传示例
*@这里我们演示的是一个YII2.0的文件上传, 并把文件名称重新编译
*@我们上传的是一个叫 photo 的jpg和png格式的文件
*/
Controller 控制器
<?phpnamespace frontend\controllers;use yii\web\UploadedFile;#载入文件上传类use frontend\models\UploadFile;#引入我们自己的文件上传处理用的modelclass ThumbController extends \yii\web\Controller{/***@Action 文件上传示例*@这里我们演示的是一个YII2.0的文件上传, 并把文件名称重新编译*@我们上传的是一个叫photo 的jpg和png格式的文件*/ public function actionIndex() {/***@注意:* 1. 如果控制器做了 validate 的验证那么 model 的上传方法就不要再做 validate 的验证了* 2. 注意上传的文件的name的命名(我在这里上传的是一个叫photo的文件)* 3. 如果要在控制器做 validate 的验证则要注意 : *-------------①.validate的验证必须放在调用model的上传方法之前 *-------------②.我在这里给出一个示例*---------------------------------------------------------------*#$model = new UploadForm(); *#if (\Yii::$app->request->isPost) *#{ *#$model->photo = UploadedFile::getInstance($model, 'photo');*#if($model->validate() && $path=$model->upload())*#{*#echo $path;die;//输出文件路径*#}*#else*#{*#var_dump($model->getErrors());die;*#}*#} **//***@我在这里推荐一个简易的做法 ↓*/$model = new UploadFile();if (\Yii::$app->request->isPost) { $image = $model->photo = UploadedFile::getInstance($model, 'photo'); if ($file_path = $model->upload($image)){ echo $file_path;die; return; } }return $this->render('index',['model' => $model]); }
Models模型层
<?phpnamespace frontend\models;use yii\base\Model;use yii\web\UploadedFile; #载入文件上传类class UploadFile extends Model{ public $photo;public function rules() { return [ [['photo'], 'file', 'skipOnEmpty' => false, 'extensions' => 'png, jpg','wrongExtension'=>'只能上传{extensions}类型文件!'], ]; } /***@Action 文件上传*/public function upload() {if ($this->validate()){$rootPath = "uploads/";//定义上传的根目录$ext = $this->photo->extension;//获取文件的后缀(*格式*)$randName = time() . rand(1000, 9999) . "." . $ext;//重新编译文件名称 $path = abs(crc32($randName) % 500);//编译第二层文件夹名称 $rootPath = $rootPath . $path . "/";//拼接 if (!file_exists($path)){//判断该目录是否存在 mkdir($rootPath,true); } $re = $this->photo->saveAs($rootPath . $randName);//调用内置封装类**执行上传 if($re){return $rootPath . $randName;//上传成功**返回文件的路径名称}else{return false;} }else{ return false; }}}
VIEWS视图层
<?phpuse yii\widgets\ActiveForm;?><?php $form = ActiveForm::begin(['options' => ['enctype' => 'multipart/form-data']]) ?> <?= $form->field($model, 'photo')->fileInput() ?> <button>Submit</button><?php ActiveForm::end() ?>
0 0
- YII2.0的文件上传, 并把文件名称重新编译
- yii2的文件上传
- Yii2.0文件上传
- yii2.0 文件上传
- yii2.0表单上传文件
- yii2.0多文件上传
- yii2.0实现文件上传
- Yii2.0-单文件上传
- Yii2.0-多文件上传
- Yii2上传文件
- yii2文件上传
- yii2文件上传
- yii2文件上传
- yii2 文件上传
- yii2 文件上传
- Yii2 上传文件
- Yii2文件上传
- Yii2文件上传
- 【LeetCode-330】Patching Array
- 开始运行命令集锦
- Struts2在eclipse运行的必须包
- ViewPager with FragmentPagerAdapter
- shellscript expect 用法
- YII2.0的文件上传, 并把文件名称重新编译
- beautifulsoup查找标签
- POJ 3061 Subsequence
- iOS学习之UI初级————CGAffineTransform坐标系统变换以及UIView的属性动画
- #java读书笔记#多线程2
- 2016面试——腾讯、蚂蚁金服、蘑菇街
- Java Map集合 转化为List 并为List排序
- 未完成的代码!
- Struts2与Struts1的区别