我在使用虚拟主机中的laravel将文件上传到我的服务器时遇到问题。
情况就是这样:当我尝试上传时,有一个绝对路径的链接:
if ($file->move( 'laravel.dev/upload', $file->getClientOriginalName() )) {
echo 'uploaded';
}
该文件可以成功上传,但它会创建一个名为“laravel.dev”的文件夹,这是我的主机,并在其中创建另一个名为“upload”的文件夹。另一方面,如果我设置我的代码:
if ($file->move( asset('uploaded'), $file->getClientOriginalName() )) {
echo 'uploaded';
}
它抛出此错误:
我想要实现的是将文件直接上传到我在“projectname / public /”公用文件夹中创建的“upload”文件夹。我怎样才能做到这一点?
答案 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';
}