我正在使用yii框架,但我认为这与PHP有关
在我的控制器中,我有以下代码
$model = new Events;
$model->type_id = $type_id;
$checkFileUpload = checkFileUpload($model);
函数checkFileUpload是一个包含
的自定义函数function checkFileUpload($model)
{
$rnd = rand(0, 9999);
$uploadedFile = CUploadedFile::getInstance($model, 'image');
if($uploadedFile->error == 0)
{
$fileName = "{$rnd}-{$uploadedFile}"; // random number file name
$model->image = $fileName;
...
我在$ uploadedFile->错误中获得了非对象的错误获取属性。
我尝试使用对模型的引用,但它已被弃用,对我不起作用。
如果我在控制器代码中使用被调用函数(checkFileUpload)的代码,它可以正常工作。我怀疑对象没有以正确的方式传递。
任何帮助?
答案 0 :(得分:0)
这是因为您对CUploadedFile::getInstance
的调用会返回null
而不是您想要的实例。
如果没有为指定的模型属性上传文件,则返回Null。
您的文件似乎未正确上传。我不是Yii Framework用户,但文档说明:
应使用CHtml::activeFileField上传文件。
因此,您应该使用Yii Framework中的正确方法验证文件是否已实际正确上传。
PS:对象总是通过引用传递。
答案 1 :(得分:0)
$model = new Events;
$type_id=$model->type_id;
$checkFileUpload = checkFileUpload($model);
function checkFileUpload($model)
{
$rnd = rand(0, 9999);
$uploadedFile = CUploadedFile::getInstance($model, 'image');
if(!isset($uploadedFile->getHasError()))
{
$fileName = "{$rnd}-{$uploadedFile}"; // random number file name
$model->image = $fileName;
答案 2 :(得分:0)
问题出现是因为当您使用 $ uploadedFile->错误时, $ uploadedFile 的值为null
。
以下行未提供所需的值
$ uploadedFile = CUploadedFile :: getInstance($ model,' image');
这意味着没有上传文件。
尝试CVarDumper::dump($_FILES,10,true);
这将告诉您问题是与UPLOADING OF THE FILE
还是GETTING THE DETAILS OF THE UPLOADED FILE
答案 3 :(得分:0)
$uploadedFile->_error
。您必须在代码中调用$uploadedFile->getError()
。如果没有上传文件,$ uploadedFile也会返回null,所以你也必须照顾它。
$rnd = rand(0, 9999);
$uploadedFile = CUploadedFile::getInstance($model, 'image');
if(!empty($uploadedFile) && !$uploadedFile->getHasError())
{
$fileName = "{$rnd}-{$uploadedFile}"; // random number file name
$model->image = $fileName;
会为你效劳。