4

我正在尝试从现有文件创建 UploadedFile。但它没有成功上传,也没有显示任何错误。

这是我的代码

   $encoded_data = "This is a huge string";
   $filename = "tempFile";
   $handle = fopen($_SERVER['DOCUMENT_ROOT'].$filename, "a+")
   file_put_contents($_SERVER['DOCUMENT_ROOT'].$filename, $encoded_data);
   $file = new UploadedFile($_SERVER['DOCUMENT_ROOT'].$filename, $filename, null, filesize($_SERVER['DOCUMENT_ROOT'].$filename));
   var_dump($file->getClientSize());
   var_dump($file->getError());
   var_dump($file->isValid());
   var_dump(is_uploaded_file($file));

结果是

int 21
int 0
boolean false
boolean false

我确定 tempFile 存在于文档根目录中!

4

1 回答 1

1

is_uploaded_file()将检查文件是否已实际上传,因此它不适用于您的代码,因为该文件尚未上传。这就是为什么isValid()也返回 false 的原因,因为它is_file_uploaded()用于检查文件。一旦这样说,UploadedFile 确实有一个 $test 参数,如果设置为 true,将isValid()不检查文件是否实际上传。这用于测试,实际上没有文件上传。您可以将此参数设置为 true,然后isValid()将为您的文件返回 true。这是一个黑客,但也许是你需要的

于 2015-10-17T22:42:40.770 回答