1

我正在尝试执行文件上传,并且正在生成一条路线来告诉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

有任何想法吗?

4

2 回答 2

4

您不能将文件移动到 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'
);
于 2012-10-20T17:12:54.847 回答
0

一些细微的修改:

$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 将删除该条目。

于 2017-10-10T10:34:03.917 回答