Php 如何在yii中以两个dirs保存上传的图像两次?
我想为两个变量分配一个文件字段输入,然后我想将这两个变量保存到两个不同的目录中,下面是我的代码: 控制器:Php 如何在yii中以两个dirs保存上传的图像两次?,php,file-upload,yii,Php,File Upload,Yii,我想为两个变量分配一个文件字段输入,然后我想将这两个变量保存到两个不同的目录中,下面是我的代码: 控制器: if(isset($_POST['Articles'])) { $model->attributes=$_POST['Articles']; $model->date = date('Y-m-d H:i:s'); $model->disp
if(isset($_POST['Articles']))
{
$model->attributes=$_POST['Articles'];
$model->date = date('Y-m-d H:i:s');
$model->display = 1;
$model->visits = 0;
$model->image = CUploadedFile::getInstance($model, 'image');
$model->thumbnail = CUploadedFile::getInstance($model, 'image');
if($model->save()){
if(!empty($model->image)){
$model->image->saveAs(getcwd()."/images/articles/".$model->image);
if(!empty($model->thumbnail))
if(!$model->thumbnail->saveAs(getcwd()."\images\articles\thumbnails/".$model->thumbnail))
$thumbnail = Yii::app()->image->load(getcwd()."/images/articles/thumbnails/".$model->thumbnail);
$thumbnail->resize(64, 64);
$thumbnail->save();
}
$this->redirect(array('view','id'=>$model->id));
}
保存模型后,缩略图目录仍然为空,并且我从图像扩展中得到一个错误,即没有要加载的文件,因此如何在两个目录中保存此图像两次 您不需要2个映像的2个实例,默认情况下,saveAs会删除临时文件,因此您可以执行以下操作:
if(isset($_POST['Articles']))
{
$model->attributes=$_POST['Articles'];
$model->date = date('Y-m-d H:i:s');
$model->display = 1;
$model->visits = 0;
$model->image = CUploadedFile::getInstance($model, 'image');
if($model->save()){
if(!empty($model->image)){
$model->image->saveAs(getcwd()."/images/articles/".$model->image,false);//here's a trick
if($model->image->saveAs(getcwd()."\images\articles\thumbnails/".$model->image) {
$thumbnail = Yii::app()->image->load(getcwd()."/images/articles/thumbnails/".$model->image);
$thumbnail->resize(64, 64);
$thumbnail->save();
}
$this->redirect(array('view','id'=>$model->id));
}
您也可以在不保存图像的情况下执行此操作,然后重新加载-动态执行,例如EUploadedImage。您不需要两个图像的实例,默认情况下,saveAs会删除临时文件,因此您可以执行以下操作:
if(isset($_POST['Articles']))
{
$model->attributes=$_POST['Articles'];
$model->date = date('Y-m-d H:i:s');
$model->display = 1;
$model->visits = 0;
$model->image = CUploadedFile::getInstance($model, 'image');
if($model->save()){
if(!empty($model->image)){
$model->image->saveAs(getcwd()."/images/articles/".$model->image,false);//here's a trick
if($model->image->saveAs(getcwd()."\images\articles\thumbnails/".$model->image) {
$thumbnail = Yii::app()->image->load(getcwd()."/images/articles/thumbnails/".$model->image);
$thumbnail->resize(64, 64);
$thumbnail->save();
}
$this->redirect(array('view','id'=>$model->id));
}
你也可以在不保存图像的情况下进行操作,然后再次加载-例如,在飞行中进行操作