我正在尝试上传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();
}
答案 0 :(得分:0)
我使用EAjaxUpload扩展程序,这很好。但如果您需要一个具有完整功能的上传器(如暂停,恢复......),您可以使用 PlUpload插件。
答案 1 :(得分:-1)
我有类似的问题。不确定你的$ 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变量。