【发布时间】:2013-09-13 15:55:18
【问题描述】:
我有一个非常好的 Symfony 函数,它从一个发布的表单(在 symfony 上生成)进行一些文件操作,这个函数的输入是一个 UploadedFile 对象和这个对象的一个例子 (print_r)是:
Symfony\Component\HttpFoundation\File\UploadedFile Object
(
[test:Symfony\Component\HttpFoundation\File\UploadedFile:private] =>
[originalName:Symfony\Component\HttpFoundation\File\UploadedFile:private] => Untitled-10001.png
[mimeType:Symfony\Component\HttpFoundation\File\UploadedFile:private] => image/png
[size:Symfony\Component\HttpFoundation\File\UploadedFile:private] => 8718
[error:Symfony\Component\HttpFoundation\File\UploadedFile:private] => 0
[pathName:SplFileInfo:private] => /tmp/phpduxlg4
[fileName:SplFileInfo:private] => phpduxlg4
)
我有另一个 web 表单,纯 html,没有 Symfony 实现或集成。因此,您所知道的这种形式的已发布文件将具有以下形式(print_r):
Array
(
[gifts_add] => Array
(
[name] => Array
(
[image] => Untitled-10001.png
)
[type] => Array
(
[image] => image/png
)
[tmp_name] => Array
(
[image] => /tmp/phpduxlg4
)
[error] => Array
(
[image] => 0
)
[size] => Array
(
[image] => 8718
)
)
)
我无法修改处理文件的函数,所以我需要一种方法将示例二中的正常上传文件对象从第一个“转换”为 Symfony uploadFile 对象。
我知道这是一个 hack,所以不是一个非常干净的解决方案,但目前是我解决这个问题的唯一方法,所以在简历中,如果你有一个像第二个这样的对象,你如何让它看起来像第一个一个?
编辑:
根据答案,这是我目前得到的:
print_r($_FILES);
print_r($gift->getImage( ));
echo '---';
$myfile= new \Component\HttpFoundation\File\UploadedFile();
$myfile->setOriginalName($_FILES["gifts_add"]["name"][0]);
$myfile->setMimeType($_FILES["gifts_add"]["type"][0]);
$myfile->setSize($_FILES["gifts_add"]["size"][0]);
$myfile->setError($_FILES["gifts_add"]["error"][0]);
$myfile->setPathName($_FILES["gifts_add"]["tmp_name"][0]);
$myfile->setFileName($_FILES["gifts_add"]["name"][0]);
print_r($myfile);
die('DEBUG');
仍然 print_r($myfile) 似乎输出为空或阻止脚本。
【问题讨论】:
标签: php html symfony symfony-forms