我使用yii2高级,文件上传不起作用

时间:2017-04-19 12:39:37

标签: php file-upload yii

在我的控制器中

<?php
namespace backend\controllers;
use Yii;
use backend\models\Vendors;
use backend\models\User;
use app\models\VendorsSearch;
use yii\web\Controller;
use yii\web\NotFoundHttpException;
use yii\filters\VerbFilter;
use yii\filters\AccessControl;
use frontend\models\SignupForm;
use backend\models\UserProfiles;
use backend\models\Testuploadmodel;
use yii\web\UploadedFile;
class VendorsController extends Controller
{        
public function actionUpdate($id, $user_id)
{
    $Testuploadmodel = new Testuploadmodel();
    if ($Testuploadmodel->load(Yii::$app->request->post())) {
        $path = Yii::getAlias('@frontend') .'/web/uploads/';
        $Testuploadmodel->covers = 
        UploadedFile::getInstance($Testuploadmodel, 'covers');
        if ($Testuploadmodel->covers && $Testuploadmodel->validate()) {
            $Testuploadmodel->covers->saveAs($path . $Testuploadmodel->covers->baseName . '.' . $Testuploadmodel->covers->extension);
        }
        return $this->redirect(['view', 'id' => $id, 'user_id' => $user_id]);
    }
    else {
        return $this->render('update', [
            'Testuploadmodel' => $Testuploadmodel,
        ]);
    }
}

这是我的模特

<?php
namespace backend\models;
use yii\base\Model;
use yii\web\UploadedFile;
class Testuploadmodel extends Model
{
    /**
     * @var UploadedFile
     */
    //public $imageFile;
     public $covers;
    public function rules()
    {
        return [
            [['covers'], 'file', 'skipOnEmpty' => false, 'extensions' => 'png, jpg', 'maxFiles' => 4],
        ];
    }
}
?>

这是我的查看文件。在视图文件中我已经更改了不同的选项。我已经在其他工作中实现了相同的功能,但在这里它不起作用。在那里,print_r($ _ POST)显示带有文件字段名称的空数组,但这里的文件字段名称数组显示图像名称。无法找到解决方法。

<?php
use yii\helpers\Html;
use yii\bootstrap\ActiveForm;
$this->params['breadcrumbs'][] = 'Update';
?>
<h1><?= Html::encode($this->title) ?></h1>
<?php $form = ActiveForm::begin(['id' => 'registration-form', 'options' => 
['enctype' => 'multipart/formdata']]); ?>
<ul class="nav nav-tabs">
<li class="active"><a data-toggle="tab" href="#home">Update Vendor</a></li>
<li><a data-toggle="tab" href="#menu1">Update Profile</a></li>
</ul>
<div class="tab-content">
<div id="home" class="tab-pane fade in active">
    <h3>Update Vendor</h3>
</div>
<div id="menu1" class="tab-pane fade">
    <h3>Update Profile</h3>
    <?php echo  $form->field($Testuploadmodel, 'covers')->fileInput() ?>
</div>
</div>
<div class = "form-group">
<?php echo  Html::submitButton('Submit', ['class' => 'btn btn-primary',
    'name' => 'profile-button']) ?>
</div>
<?php ActiveForm::end(); ?>

2 个答案:

答案 0 :(得分:0)

问题是&#34; multipart / form-data&#34;中的拼写错误。我写了#34; multipart / formdata&#34;哪个不对。应该有一个&#34; - &#34;在表单和数据之间划分。这就是为什么文件没有上传的原因。

答案 1 :(得分:0)

“ multipart / formdata”通常是文件上传错误背后的基本原因。每当您在任何平台上遇到此问题时,请首先确认“ multipart / formdata”。