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,
]);?>


(Kriging_NSGA2)克里金模型结合多目标遗传算法求最优因变量及对应的最佳自变量组合研究(Matlab代码实现)内容概要:本文介绍了克里金模型(Kriging)与多目标遗传算法NSGA-II相结合的方法,用于求解最优因变量及其对应的最佳自变量组合,并提供了完整的Matlab代码实现。该方法首先利用克里金模型构建高精度的代理模型,逼近复杂的非线性系统响应,减少计算成本;随后结合NSGA-II算法进行多目标优化,搜索帕累托前沿解集,从而获得多个最优折衷方案。文中详细阐述了代理模型构建、算法集成流程及参数设置,适用于工程设计、参数反演等复杂优化问题。此外,文档还展示了该方法在SCI一区论文中的复现应用,体现了其科学性与实用性。; 适合人群:具备一定Matlab编程基础,熟悉优化算法和数值建模的研究生、科研人员及工程技术人员,尤其适合从事仿真优化、实验设计、代理模型研究的相关领域工作者。; 使用场景及目标:①解决高计算成本的多目标优化问题,通过代理模型降低仿真次数;②在无法解析求导或函数高度非线性的情况下寻找最优变量组合;③复现SCI高水平论文中的优化方法,提升科研可信度与效率;④应用于工程设计、能源系统调度、智能制造等需参数优化的实际场景。; 阅读建议:建议读者结合提供的Matlab代码逐段理解算法实现过程,重点关注克里金模型的构建步骤与NSGA-II的集成方式,建议自行调整测试函数或实际案例验证算法性能,并配合YALMIP等工具包扩展优化求解能力。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值