2013-10-13 39 views
0

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

这里的情况:当我尝试上载有一个这样的链接的绝对路径:

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

该文件可以successsfully上传尽管它会创建一个名为“laravel.dev”文件夹,其中是我的主机,并在其中创建另一个名为“上传”的文件夹。在另一边,如果我把我的代码是这样的:

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

它抛出这个错误: Laravel Error

我想达到什么是上传文件,直接到我创建的“上传”文件夹在“projectname/public /”公用文件夹中。我怎样才能做到这一点?

回答

1

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

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

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

您使用的路径不是像laravel.dev/upload这样的URL。

+0

完美。谢谢。我没有意识到:(对我感到羞耻.. – Bajongskie

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'; 
}