这是我的行动:
public function actionCustom() {
$model = new Custom();
$model->load(\Yii::$app->request->post());
if ($model->validate()) {
// emptying the model's data
$model = new Custom();
var_dump('good');
} else {
var_dump('bad');
}
var_dump($_FILES);
return $this->render('custom', [
'model' => $model
]);
}
这是我的模特:
class Custom extends Model
{
public $file;
public function rules()
{
return [
// ['file', 'file', 'extensions' => ['png', 'jpg', 'jpeg', 'gif', 'txt'], 'maxSize' => 1024 * 100]
['file', 'file', 'maxSize' => 1024 * 100],
];
}
}
当我尝试上传大小超过我设置的maxSize规则的文件时,客户端验证显示错误,我无法通过点击按钮提交表单,这一切都很好,但我可以通过在控制台中输入类似这样的内容来强制提交,就像黑客会这样做:
document.forms[0].submit()
我得到了这个输出:
C:\wamp64\www3\controllers\SiteController.php:138:string 'good' (length=4)
C:\wamp64\www3\controllers\SiteController.php:143:
array (size=1)
'Custom' =>
array (size=5)
'name' =>
array (size=1)
'file' => string 'tste.txt' (length=8)
'type' =>
array (size=1)
'file' => string 'text/plain' (length=10)
'tmp_name' =>
array (size=1)
'file' => string 'C:\wamp64\tmp\phpDE60.tmp' (length=25)
'error' =>
array (size=1)
'file' => int 0
'size' =>
array (size=1)
'file' => int 818064
string 'good'
表示该文件已通过验证,但如何?!我发送的文件大小为818064,大于我设置的102400(1024 * 100)文件大小限制。
我做错了什么?
答案 0 :(得分:2)
您是否尝试过使用官方文档示例中提到的yii\web\UploadedFile::getInstance()
方法?
$model = new UploadForm();
if (Yii::$app->request->isPost) {
$model->imageFile = UploadedFile::getInstance($model, 'imageFile');
if ($model->upload()) {
// file is uploaded successfully
return;
}
}
http://www.yiiframework.com/doc-2.0/guide-input-file-upload.html#wiring-up