避免上传文件时出错的最佳方法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了避免上传文件时出错的最佳方法相关的知识,希望对你有一定的参考价值。

php警告 - yii base ErrorException

move_uploaded_file(/doc_2345.txt):无法打开流:权限被拒绝

- 当我尝试上传文件并将其保存到数据库(mysql)时,这是错误。我是使用框架创建网站的新手。所以我不知道如何解决它。

_形成。

<div class="documents-form">

<?php $form = ActiveForm::begin(['options' => ['enctype' => 'multipart/form-data']]); ?>
<?= $form->field($model, 'reference_no')->textInput() ?>
<?= $form->field($model, 'subject')->textInput(['maxlength' => true]) ?>
<?= $form->field($model, 'doc_date')->textInput() ?>
<?= $form->field($model, 'doc_for')->textInput(['maxlength' => true]) ?>
<?= $form->field($model, 'doc_from')->textInput(['maxlength' => true]) ?>
<?= $form->field($model, 'drawer_id')->textInput(['maxlength' => true]) ?>
<?= $form->field($model, 'doc_file')->fileInput() ?>
<div class="form-group">
    <?= html::submitButton($model->isNewRecord ? 'Create' : 'Update', ['class' => $model->isNewRecord ? 'btn btn-success' : 'btn btn-primary']) ?>
</div>

<?php ActiveForm::end(); ?>

模型。

public $file;
public static function tableName()
{
    return 'documents';
}

/**
 * @inheritdoc
 */
public function rules()
{
    return [
        [['reference_no', 'subject', 'doc_date', 'doc_for', 'drawer_id','doc_from', 'doc_file'], 'required'],
        [['reference_no'], 'integer'],
        [['doc_date'], 'safe'],
        [['subject', 'doc_for', 'drawer_id','doc_from'], 'string', 'max' => 250],
        [['doc_file'], 'string', 'max' => 300],
    ];
}

控制器。

 public function actionCreate()
{
    $model = new Documents();

    if ($model->load(Yii::$app->request->post()))  {
        $model->save();
        $docuId = $model->reference_no;
        $file = UploadedFile::getInstance($model, 'doc_file');
        $docuName = 'doc_' . $docuId . '.' . $file->getExtension();
        $file -> saveAs(Yii::getAlias('@webroot/filesPath') . '/' . $docuName);
        $model -> doc_file = $docuName;
        $model -> save();

         return $this -> redirect(['view', 'id' => $model->id]);

    } else {
        return $this->render('create', [
            'model' => $model,
        ]);
    }
}
答案

请更改文件夹权限以及“filesPath”文件夹中的所有其他文件和文件夹。

$file -> saveAs(Yii::getAlias('@webroot/filesPath') . '/' . $docuName);

我认为这将解决您的问题。

以上是关于避免上传文件时出错的最佳方法的主要内容,如果未能解决你的问题,请参考以下文章

上传文件PHP时生成唯一文件名的最佳方法[重复]

WebUploader上传大文件时,上传出错问题

CakePHP 上传文件的最佳实践

在 laravel 5.4 中测试文件上传时出错

android.view.InflateException:二进制 XML 文件第 15 行:二进制 XML 文件第 19 行:膨胀类片段时出错

当我切换到包含片段的活动时应用程序崩溃(二进制 XML 文件第 10 行:二进制 XML 文件第 10 行:膨胀类片段时出错)