[英]Symfony move_uploaded_file to public resources?
我试图执行文件上传,并且正在生成一个路由,告诉move_uploaded_file
在哪里移动文件。 在我的路由文件中(来自捆绑包内)我有:
endorsement_pics:
pattern: /images
defaults: { _resource: EndorseMeEndorsementBundle/Resources/public/images/endorsement_images }
我这样做:
$url = $this->get('router')->generate('endorsement_pics');
这会生成文字网址www.example.com/endorsement/images
而且功能
move_uploaded_file($_FILES['endorsement_image']['tmp_name'], $url."image1.jpg");
这给了我错误:
Warning: move_uploaded_file(/newsite/web/app_dev.php/endorsement/imagesimage1.jpg) [<a href='function.move-uploaded-file'>function.move-uploaded-file</a>]: failed to open stream: No such file or directory in /home/content/24/9254124/html/newsite/src/EndorseMe/EndorsementBundle/Controller/DefaultController.php line 20
有任何想法吗?
您无法将文件移动到URL - 它必须是文件系统路径。 使用路由是错误的。
要将文件上载到公共web
文件夹,您可以执行以下操作。 首先,在parameters.yml
为上传目录路径创建一个参数:
parameters:
upload_dir: %kernel.root_dir%/../web/uploads
然后使用参数进行上传:
$uploadDir = $this->container->getParameter('upload_dir');
move_uploaded_file(
$_FILES['endorsement_image']['tmp_name'],
$uploadDir . '/image1.jpg'
);
一些细微的修改:
$fileName1 = $_FILES['endorsement_image']['name'];
move_uploaded_file(
$_FILES['image']['tmp_name'],
$uploadDir . $fileName1
);
此外,Symfony 4将不再支持此声明。您必须引用它。 我发现更容易给出路径。
upload_dir: %kernel.root_dir%/../web/uploads
upload_dir: /usr/home/dir/
此外,如果您对parameters.yml进行了更改,则还必须对parameters.yml.dist进行更改,或者composer将删除该条目。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.