chainjoy
不要updated字段,created_at用时间戳
`['class' => TimestampBehavior::className(), 'updatedAtAttribute' => false, 'value' => time(), ], `
UploadedFile::getInstanceByName('file');
By Name !!!
我也被困扰了好久,最终解决了,如果使用了$model->save(); 还要记得
$this->file->saveAs($this->getFilePath($this->getFileName()), false); 这句里面的false,不然报错,找不到此文件。以下是完整代码
model:
['file', 'file', 'skipOnEmpty' => true, 'mimeTypes' => 'image/*, video/*, audio/*, application/zip, application/pdf', 'wrongMimeType' =>'禁止的文件类型', 'tooBig' => '文件太大,仅允许{formattedLimit}'] ]; public function upload(){ $this->file = UploadedFile::getInstanceByName('file'); if($this->validate()){ $this->file->saveAs($this->getFilePath($this->getFileName()), false); return true; } return false; } controller: public function actionCreate() { $model = new Media(); if ( isset( $_FILES["file"] ) && !empty( $_FILES["file"]["name"] ) ) { Yii::$app->response->format = 'json'; if($model->upload()){ $model->src = $model->getSrc(); if($model->save()){ return ['url' => $model->getUrl($model->getFileName())]; } } return $model->errors; } return $this->renderPartial('create', ['model' => $model]); } JQ: $('html, .upload-area').on('dragenter dragover drop', function (e) { e.stopPropagation(); e.preventDefault(); $('.upload-message').text('拖放到这里'); }); $('.modal').on('click','.upload-area',function(){ $('#file').click(); }); $('.modal').on('drop', '.upload-area',function (e) { e.stopPropagation(); e.preventDefault(); var files = e.originalEvent.dataTransfer.files; var formData = new FormData(); $.each(files, function(i, file) { formData.append('file', files[i]); uploadData(formData); }); }); $('.modal').on('change','#file',function(){ var formData = new FormData(); $.each($('#file')[0].files, function(i, file) { formData.append('file', $('#file')[0].files[i]); uploadData(formData); }); }); function uploadData(formData){ $.ajax({ url: '/media/create', type: 'post', data: formData, contentType: false, processData: false, dataType: 'json', beforeSend:function(){ $('.upload-message').text("上传中...");}, success: function(response){ if(response.url){ $('.upload-message').html(response.url); $.pjax.reload({container: '#pjax'}); }else{ $('.upload-message').html(response.file); } } }); } HTML: <div class="modal-header"> <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button> <b class="upload-title">上传文件</b> </div> <div class="modal-body upload-file"> <input type="file" name="file" id="file" multiple> <div class="upload-area"> <div class="upload-message">拖文件到这儿<br/>或<br/>点击选择 </div> </div> </div>