yii2 文件无法上传 [ 2.0 版本 ]
<?php $form = ActiveForm::begin(['options' => ['enctype' => 'multipart/form-data']]) ?>
<?= $form->field($model, 'file')->fileInput() ?>
<button>Submit</button>
<?php ActiveForm::end() ?>
models:
public function rules()
{
return [
[['file'], 'file', 'skipOnEmpty' => false,'extensions'=>'xls,xlsx'],
];
}
public function upload()
{
if($this->validate()){
$this->file->saveAs('uploads/' . $this->file->baseName . '.' . $this->file->extension);
return true;
}else{
return false;
}
}
控制器
$model = new UploadForm();
if(Yii::$app->request->post()){
$model->file = UploadedFile::getInstance($model, 'file');
if($model->upload()){
//文件上传成功
echo "File successfully uploaded";
return;
}
}
return $this->render('upload', ['model' => $model]);
发现压根就没有上传的文件,文件名搜不到,是不是没有在activeform引入方法URL
共 4 个回答
-
bayern008haha 回答于 2016-11-22 16:44 举报
buttun 的 type=submit 试试
-
-
sjg20010414 回答于 2016-12-23 21:14 举报
[['file'], 'file', 'skipOnEmpty' => false,'extensions'=>'xls,xlsx', 'checkExtensionByMimeType' => false], 就可以了
我根据调试发现,默认根据MIME类型来判断扩展名是启用的,并且我的xlsx文件被PHP的Magic扩展名库识别为了zip类型,从而zip和xlsx不相等,所以验证不通过了。不清楚是不是因为我的xlsx文件是wps或者moodle导出的原因,没有试验用Excel2010是否就能正确识别MIME,反正Yii2本身允许你通过配置参数不使用这个推断,绕过去就可以了。热情的清风拂月 觉得很赞 -
xingyu
注册时间:2016-11-04
最后登录:2017-02-23
在线时长:3小时50分
最后登录:2017-02-23
在线时长:3小时50分
- 粉丝0
- 金钱15
- 威望0
- 积分45