Laravel - 使用虚拟主机上传文件

时间:2013-10-13 13:54:55

标签: php apache laravel laravel-4 virtualhost

我在使用虚拟主机中的laravel将文件上传到我的服务器时遇到问题。

情况就是这样:当我尝试上传时,有一个绝对路径的链接:

if ($file->move( 'laravel.dev/upload', $file->getClientOriginalName() )) {
                    echo 'uploaded';
                }

该文件可以成功上传,但它会创建一个名为“laravel.dev”的文件夹,这是我的主机,并在其中创建另一个名为“upload”的文件夹。另一方面,如果我设置我的代码:

if ($file->move( asset('uploaded'), $file->getClientOriginalName() )) {
                    echo 'uploaded';
                }

它抛出此错误: Laravel Error

我想要实现的是将文件直接上传到我在“projectname / public /”公用文件夹中创建的“upload”文件夹。我怎样才能做到这一点?

2 个答案:

答案 0 :(得分:1)

您可以改为使用$_SERVER['DOCUMENT_ROOT']

$var = $_SERVER['DOCUMENT_ROOT'].'/uploads';

if ( $file->move($var, $file->getClientOriginalName()) ) {
    echo 'uploaded';
}

您使用的路径不是laravel.dev/upload等网址。

答案 1 :(得分:0)

正如Juan所说,你使用的是url路径而不是文件路径。 Laravel有一些path helpers来帮助解决这个问题。

如果您想要选择public/uploaded这样的文件夹,可以使用public_path().'/uploaded。 如果您想要选择app/storage/uploaded这样的文件夹,可以使用storage_path().'/uploaded

在您的示例中,您可以使用以下代码:

if ($file->move( public_path().'/uploaded', $file->getClientOriginalName() )) {
    echo 'uploaded';
}