如何在yii basic中的文件夹上传中将文件上传到服务器。 我试过但它的工作正常
问题描述:
Its not uploading the file the folder in the project.
How can I upload the the file?
public function actionCreate()
{
$model = new UploadForm();
if ($model->load(Yii::$app->request->post()) && $model->save()) {
$filename=$model->filename;
$model->file= UploadedFile::getInstance($model,'file');
$model->file->saveAs('uploads/' .$filename.'.'.$model->file->extension );
答
Declare an attribute to store the file name in the model class. Also declare a file validation rule for this attribute to ensure a file is uploaded with specific extension name.
Then, in the controller class define an action method to collect user-submitted data.
$model = new UploadForm();
if(isset(Yii::$app->request->post()))
{
$model->attributes=Yii::$app->request->post();
$model->file=UploadedFile::getInstance($model,'file');
if($model->save())
{
$model->file->saveAs('path/to/localFile');
}
}
答
It is not uploading, because you are calling $model->save()
before adding a value
to the $model->file
field.
The code should look like
if ($model->load(Yii::$app->request->post())) {
$filename = $model->ltkcnt_contracts_name;
$model->file = UploadedFile::getInstance($model, 'file');
if ($model->save()) {
$model->file->saveAs('uploads/' . $filename . '.' . $model->file->extension);
}
}
You should read this article for more info.
答
<?php
namespace app\models;
use Yii;
use yii\web\UploadedFile;
class Contracts extends \yii\db\ActiveRecord
{
public $file;
public static function tableName()
{
return 'uploads_table';
}
public function rules()
{
return [
[['file'], 'file'],
];
}
public function attributeLabels()
{
return [
'file' => 'Files',
];
}
}