yii2用表单上传文件经常用到的,该怎样上传呢?

1、单个文件上传
首先建立一个模型models/UploadForm.php,内容如下
namespace app\models;
use yii\base\Model;
use yii\web\UploadedFile;
/**
* UploadForm is the model behind the upload form.
*/
class UploadForm extends Model
{
/**
* @var UploadedFile file attribute
*/
public $file;
/**
* @return array the validation rules.
*/
public function rules()
{
return [
[['file'], 'file'],
];
}
}
再建立一个视图文件,内容如下
<?php use yii\widgets\ActiveForm; ?> <?php $form = ActiveForm::begin(['options' => ['enctype' => 'multipart/form-data']]) ?> <?= $form->field($model, 'file')->fileInput() ?> <button>Submit</button> <?php ActiveForm::end() ?>
最后建立控制器文件,内容如下
namespace app\controllers;
use Yii;
use yii\web\Controller;
use app\models\UploadForm;
use yii\web\UploadedFile;
class SiteController extends Controller
{
public function actionUpload()
{
$model = new UploadForm();
if (Yii::$app->request->isPost) {
$model->file = UploadedFile::getInstance($model, 'file');
if ($model->file && $model->validate()) {
$model->file->saveAs('uploads/' . $model->file->baseName . '.' . $model->file->extension);
}
}
return $this->render('upload', ['model' => $model]);
}
}
注意这里我们没有用model->load(...),而是用了UploadedFile::getInstance(...)。区别是后者不会执行$model->validate(),所以需要手动的去执行$model->validate()来检验数据的合法性。如果检验通过了,上传的文件保存在uploads文件夹下,即web目录下的uploads里。
一些可选的配置选项
上传文件不能为空
public function rules()
{
return [
[['file'], 'file', 'skipOnEmpty' => false],
];
}
上传类型,不仅可以根据扩展名检验,还可以根据文件的内容进行检验
public function rules()
{
return [
[['file'], 'file', 'extensions' => 'jpg, png', 'mimeTypes' => 'image/jpeg, image/png',],
];
}
2、多文件上传
如果你想一次上传多个文件,只需调节几个参数就可以达到目的
Model:
class UploadForm extends Model
{
/**
* @var UploadedFile|Null file attribute
*/
public $file;
/**
* @return array the validation rules.
*/
public function rules()
{
return [
[['file'], 'file', 'maxFiles' => 10], // <--- here!
];
}
}
View:
<?php use yii\widgets\ActiveForm; $form = ActiveForm::begin(['options' => ['enctype' => 'multipart/form-data']]); ?> <?= $form->field($model, 'file[]')->fileInput(['multiple' => true]) ?> <button>Submit</button> <?php ActiveForm::end(); ?>
与单文件上传不同的是下面这句
$form->field($model, 'file[]')->fileInput(['multiple' => true])
Controller:
namespace app\controllers;
use Yii;
use yii\web\Controller;
use app\models\UploadForm;
use yii\web\UploadedFile;
class SiteController extends Controller
{
public function actionUpload()
{
$model = new UploadForm();
if (Yii::$app->request->isPost) {
$model->file = UploadedFile::getInstances($model, 'file');
if ($model->file && $model->validate()) {
foreach ($model->file as $file) {
$file->saveAs('uploads/' . $file->baseName . '.' . $file->extension);
}
}
}
return $this->render('upload', ['model' => $model]);
}
}
这样就可以实现多文件上传了。
参考https://github.com/yiisoft/yii2/blob/master/docs/guide/input-file-upload.md
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# Yii2
# 表单上传文件
# Yii
# Yii2使用自带的UploadedFile实现的文件上传
# Yii2组件之多图上传插件FileInput的详细使用教程
# yii2整合百度编辑器umeditor及umeditor图片上传问题的解决办法
# Yii2实现ajax上传图片插件用法
# yii2利用自带UploadedFile实现上传图片的示例
# yii2 上传图片的示例代码
# yii2高级应用之自定义组件实现全局使用图片上传功能的方法
# Yii2.0使用阿里云OSS的SDK上传图片、下载、删除图片示例
# yii2.0整合阿里云oss上传单个文件的示例
# Yii2.0多文件上传实例说明
# yii2多图上传组件的使用教程
# YII2框架实现表单中上传单个文件的方法示例
# 文件上传
# 上传
# 上传文件
# 的是
# 几个
# 还可以
# 多个
# 只需
# 你想
# 用了
# 扩展名
# 就可
# 可选
# 可以根据
# 建立一个
# 表单
# 这句
# 大家多多
# 就可以
# 为空
相关文章:
西安制作网站公司有哪些,西安货运司机用的最多的app或者网站是什么?
公司网站的制作公司,企业网站制作基本流程有哪些?
贸易公司网站制作流程,出口贸易网站设计怎么做?
如何在西部数码注册域名并快速搭建网站?
建站主机解析:虚拟主机配置与服务器选择指南
*服务器网站为何频现安全漏洞?
高性能网站服务器部署指南:稳定运行与安全配置优化方案
浅谈Javascript中的Label语句
制作门户网站的参考文献在哪,小说网站怎么建立?
如何在阿里云ECS服务器部署织梦CMS网站?
详解免费开源的.NET多类型文件解压缩组件SharpZipLib(.NET组件介绍之七)
,在苏州找工作,上哪个网站比较好?
婚礼视频制作网站,学习*后期制作的网站有哪些?
在线教育网站制作平台,山西立德教育官网?
深圳企业网站制作设计,在深圳如何网上全流程注册公司?
建站主机选购指南:核心配置与性价比推荐解析
简单实现Android验证码
建站主机助手选型指南:2025年热门推荐与高效部署技巧
如何确保FTP站点访问权限与数据传输安全?
网站制作公司,橙子建站是合法的吗?
香港代理服务器配置指南:高匿IP选择、跨境加速与SEO优化技巧
Python lxml的etree和ElementTree有什么区别
网站建设设计制作营销公司南阳,如何策划设计和建设网站?
如何通过虚拟主机快速完成网站搭建?
定制建站流程步骤详解:一站式方案设计与开发指南
如何在Golang中引入测试模块_Golang测试包导入与使用实践
如何在云主机快速搭建网站站点?
商务网站制作工程师,从哪几个方面把握电子商务网站主页和页面的特色设计?
如何选择高效响应式自助建站源码系统?
网站制作需要会哪些技术,建立一个网站要花费多少?
在线制作视频的网站有哪些,电脑如何制作视频短片?
网站制作培训多少钱一个月,网站优化seo培训课程有哪些?
佛山网站制作系统,佛山企业变更地址网上办理步骤?
建站之星展会模版如何一键下载生成?
电商网站制作价格怎么算,网上拍卖流程以及规则?
如何用PHP快速搭建CMS系统?
如何获取PHP WAP自助建站系统源码?
如何在阿里云域名上完成建站全流程?
建站之星IIS配置教程:代码生成技巧与站点搭建指南
视频网站制作教程,怎么样制作优酷网的小视频?
网站制作大概要多少钱一个,做一个平台网站大概多少钱?
寿县云建站:智能SEO优化与多行业模板快速上线指南
建站之星安装需要哪些步骤及注意事项?
怎么制作一个起泡网,水泡粪全漏粪育肥舍冬季氨气超过25ppm,可以有哪些措施降低舍内氨气水平?
南平网站制作公司,2025年南平市事业单位报名时间?
Android滚轮选择时间控件使用详解
Swift中switch语句区间和元组模式匹配
湖北网站制作公司有哪些,湖北清能集团官网?
微网站制作教程,不会写代码,不会编程,怎么样建自己的网站?
已有域名如何免费搭建网站?
*请认真填写需求信息,我们会在24小时内与您取得联系。