yii2.0上传

1.单文件上传

1)调用模型层完成:

M层调用:
use yii\web\UploadedFile;
[['a_pic'],'string','max'=>255],
//图片上传
public $a_pic;
public function upload(){
$this->a_pic->saveAs('uploads/' . $this->a_pic->baseName . '.' . $this->a_pic->extension);
return true;
}

C层调用:
use yii\web\UploadedFile;
$arr = $model->a_pic = UploadedFile::getInstance($model, 'a_pic');
if ($model->upload()) {
$photo = $arr->name;
$connection = \Yii::$app->db; 
$connection->createCommand()->insert('work1', [ 
'a_title' => $title, 
'a_desc' => $desc, 
'a_pic' => $photo,
])->execute(); 
}

2)不适用模型层进行文件上传

public $enableCsrfValidation = false; //禁止表单提交

$upload=new UploadedFile(); //实例化上传类
$name=$upload->getInstanceByName('myfile'); //获取文件原名称
$img=$_FILES['myfile']; //获取上传文件参数
$upload->tempName=$img['tmp_name']; //设置上传的文件的临时名称
$img_path='uploads/'.$name; //设置上传文件的路径名称(这里的数据进行入库)
$arr=$upload->saveAs($img_path); //保存文件
var_dump($arr);


<form action="index.php?r=exercise/upload" method="post" enctype="multipart/form-data">
标题:<input type="text" name="e_title"><br/>
头像:<input type="file" name="e_img"><br/>
<input type="submit" value="提交"></form>

2.多文件上传

1)调用模型层完成:

//模型层
public $e_img;

public function upload(){
foreach ($this->e_img as $file){

$file->saveAs('uploads/' . $file->baseName . '.' . $file->extension); 
}
return true; 
}
//控制器层
use yii\web\UploadedFile;
$model = new Exercise();
$arr = $model->e_img = UploadedFile::getInstances($model, 'e_img');
if ($model->upload()){
for($i=0;$i<count($arr);$i++){
$photo[] = $arr[$i]->name;
}
$str = implode(',',$photo);
$connection = \Yii::$app->db;
$connection->createCommand()->insert('exercise', [
'e_title' => "$e_title",
'e_img' => $str,
])->execute();
return $this->redirect(['exercise/list']);

$connection = \Yii::$app->db;
$command = $connection->createCommand('SELECT * FROM exercise');
$posts = $command->queryAll();
foreach($posts as $key => $val){
$img = explode(',',$val['e_img']);
$val['e_img'] = $img;
$photos[] = $val;
}
return $this->render('list',['list'=>$photos]);
//视图层
<?php foreach($list as $key=>$val){?>
<tr>
<td><?php echo $val['e_title']?></td>
<td>
<?php foreach($val['e_img'] as $k=>$v){?>
<img src="../web/uploads/<?php echo $v?>" style="width:100px;height:100px;"/>
<?php }?>
</td>
</tr>
<?php }?>

2)在调用模型层的基础上序列化

//控制器demo:

<?php

namespace frontend\controllers;
use app\models\Photo;
use Yii;
use yii\web\UploadedFile;
use yii\data\Pagination;
class PhotoController extends \yii\web\Controller{
public function actionIndex(){
$model = new Photo();
return $this->render('index', ['model' => $model]);
}
public function actionUpload(){
$model = new Photo();
if (Yii::$app->request->isPost) {
$arr = $model->photo = UploadedFile::getInstances($model, 'photo');
if ($model->upload()){
for ($i=0; $i <count($arr) ; $i++) { 
$img[]= $arr[$i]->name;
}else{
$str = serialize($img);
$model->photo = "$str";
$model->save(); 
}
}
return $this->render('index', ['model' => $model]);
}
public function actionList(){
$query = Photo::find();
$countQuery = clone $query;
$pages = new Pagination(['totalCount' => $countQuery->count(),'pageSize'=>2]);
$models = $query->offset($pages->offset)
->limit($pages->limit)
->all();
return $this->render('list', [
'models' => $models,
'pages' => $pages,
]);
}
}

//视图层demo:
<table>
<tr>
<td>id</td>
<td>ͼƬ</td>
</tr>
<?php foreach ($models as $key => $v) {?>
<tr>
<td><?php echo $v['p_id']?></td>
<?php 
$photos = unserialize($v['photo']);
foreach ($photos as $key => $va) {?>
<td><img src="../web/uploads/<?php echo $va?>" alt="" height="50" width="50"/></td>
<?php }?>

</tr>
<?php }?>

</table>
<?php 
use yii\widgets\LinkPager;
echo LinkPager::widget([
'pagination' => $pages,
]);?>


源码地址: https://pan.quark.cn/s/d1f41682e390 miyoubiAuto 米游社每日米游币自动化Python脚本(务必使用Python3) 8更新:更换cookie的获取地址 注意:禁止在B站、贴吧、或各大论坛大肆传播! 作者已退游,项目不维护了。 如果有能力的可以pr修复。 小引一波 推荐关注几个非常可爱有趣的女孩! 欢迎B站搜索: @嘉然今天吃什么 @向晚大魔王 @乃琳Queen @贝拉kira 第三方库 食用方法 下载源码 在Global.py中设置米游社Cookie 运行myb.py 本地第一次运行时会自动生产一个文件储存cookie,请勿删除 当前仅支持单个账号! 获取Cookie方法 浏览器无痕模式打开 http://user.mihoyo.com/ ,登录账号 按,打开,找到并点击 按刷新页面,按下图复制 Cookie: How to get mys cookie 当触发时,可尝试按关闭,然后再次刷新页面,最后复制 Cookie。 也可以使用另一种方法: 复制代码 浏览器无痕模式打开 http://user.mihoyo.com/ ,登录账号 按,打开,找到并点击 控制台粘贴代码并运行,获得类似的输出信息 部分即为所需复制的 Cookie,点击确定复制 部署方法--腾讯云函数版(推荐! ) 下载项目源码和压缩包 进入项目文件夹打开命令行执行以下命令 xxxxxxx为通过上面方式或取得米游社cookie 一定要用双引号包裹!! 例如: png 复制返回内容(包括括号) 例如: QQ截图20210505031552.png 登录腾讯云函数官网 选择函数服务-新建-自定义创建 函数名称随意-地区随意-运行环境Python3....
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值