在 yii PHP 中上传和下载文件


uploading and downloading files in yii PHP

我正在尝试在 yii 中上传文件,但文件没有上传。有人可以帮忙吗?我的控制器代码如下所示

public function actionCreate()
    {
        $this->hasPrivilege(Acl::ACTION_CREATE);
        $this->pageTitle = Lang::t(Constants::LABEL_CREATE . ' ' . $this->resourceLabel);
        $model = new AflTestFile();
        $model_class_name = $model->getClassName();
        if (isset($_POST[$model_class_name])) {
            $model->attributes = $_POST[$model_class_name];
            $model->test_file=CUploadedFile::getInstance($model,'test_file');
        if($model->save()) {
                $model->test_file->saveAs(Yii::getPathOfAlias('/uploads'));
            $error_message = CActiveForm::validate($model);
            $error_message_decoded = CJSON::decode($error_message);
            if (!empty($error_message_decoded)) {
                echo CJSON::encode(array('success' => false, 'message' => $error_message));
            } else {
                $model->save(FALSE);
                echo CJSON::encode(array('success' => true, 'message' => Lang::t('SUCCESS_MESSAGE'), 'redirectUrl' => UrlManager::getReturnUrl($this->createUrl('index'))));
            }
            }
            Yii::app()->end();
        }

我使用EAjaxUpload扩展,它很好。 但是如果您需要具有完整功能(如暂停,恢复,...)的上传器,您可以使用上传插件。

我也有类似的问题。不确定您的设置适用于$model,但请尝试使用 getInstanceByName 并从那里使用上传实例。

$upload = CUploadedFile::getInstanceByName("test_file");
$file['name'] = $upload->name;
$file['tmp_name'] = $upload->tempName;
$file['size'] = $upload->size;

还要检查您的<form>元素设置是否正确,并且您使用了正确的方法和加密类型属性(即 文件<form method="post" enctype="multipart/form-data">

您还可以进行调试以确保正在上传文件并且正确设置了 $_FILE 变量。