Laravel 文件上传NotFoundHttpException
Laravel file upload NotFoundHttpException
我正在使用 Laravel 将图像上传到我的文件夹。
$file = Input::file('largeImage');
$filePath = '/uploads/'.date("Y/m").'/'.time().'/';
$path = $filePath;
$file->move($path, $file->getClientOriginalName());
图片上传成功。
现在,当我尝试访问它时:
http://localhost:8080/uploads/2015/01/1420644761/10377625_673554946025652_6686347512849117388_n.jpg
我遇到 Symfony \ Component \ HttpKernel \ Exception \ NotFoundHttpException
错误。
我什至试过了http://localhost:8080/public/uploads/2015/01/1420644761/10377625_673554946025652_6686347512849117388_n.jpg
但是同样的错误。可能是什么问题?我检查了上传文件夹,图像在那里。
您需要添加对 public_path 助手的调用:
$filePath = public_path() . '/uploads/'.date("Y/m").'/'.time().'/';
否则我认为它会将其放置在应用程序根目录中。
好的,这是一个路由问题。要解决这个问题,请定义一个 Route::get
导航到您的文件。
Route::get("/download/{year}/{month}/{time}/{filename}", "Controller@downloadFile");
那么您需要在该控制器中有一个函数来处理文件下载:
public function downloadFile($year, $month, $time, $filename){
$path = public_path()."/uploads/".$year."/".$month."/".$time."/".$filename".jpg";
// Should equate to: "/uploads/2015/01/142064476110377625_673554946025652_6686347512849117388_n.jpg
return Response::download($path, 'image.jpg');
}
理论上应该可以满足您的需求。可能需要修改路径以满足您的需要,但这应该是一般的想法。测试一下,让我知道它是否有效。
备注
这不是处理下载的最佳方式,因为您需要知道所需文件的确切文件名,但它为您指明了正确的方向。
这对我有用:
$file = Input::file('largeImage');
$filePath = '/uploads/'.date("Y/m").'/'.time().'/';
$filename = $file->getClientOriginalName();
$path = public_path().$filePath;
$file->move($path, $file->getClientOriginalName());
我正在使用 Laravel 将图像上传到我的文件夹。
$file = Input::file('largeImage');
$filePath = '/uploads/'.date("Y/m").'/'.time().'/';
$path = $filePath;
$file->move($path, $file->getClientOriginalName());
图片上传成功。
现在,当我尝试访问它时:
http://localhost:8080/uploads/2015/01/1420644761/10377625_673554946025652_6686347512849117388_n.jpg
我遇到 Symfony \ Component \ HttpKernel \ Exception \ NotFoundHttpException
错误。
我什至试过了http://localhost:8080/public/uploads/2015/01/1420644761/10377625_673554946025652_6686347512849117388_n.jpg
但是同样的错误。可能是什么问题?我检查了上传文件夹,图像在那里。
您需要添加对 public_path 助手的调用:
$filePath = public_path() . '/uploads/'.date("Y/m").'/'.time().'/';
否则我认为它会将其放置在应用程序根目录中。
好的,这是一个路由问题。要解决这个问题,请定义一个 Route::get
导航到您的文件。
Route::get("/download/{year}/{month}/{time}/{filename}", "Controller@downloadFile");
那么您需要在该控制器中有一个函数来处理文件下载:
public function downloadFile($year, $month, $time, $filename){
$path = public_path()."/uploads/".$year."/".$month."/".$time."/".$filename".jpg";
// Should equate to: "/uploads/2015/01/142064476110377625_673554946025652_6686347512849117388_n.jpg
return Response::download($path, 'image.jpg');
}
理论上应该可以满足您的需求。可能需要修改路径以满足您的需要,但这应该是一般的想法。测试一下,让我知道它是否有效。
备注
这不是处理下载的最佳方式,因为您需要知道所需文件的确切文件名,但它为您指明了正确的方向。
这对我有用:
$file = Input::file('largeImage');
$filePath = '/uploads/'.date("Y/m").'/'.time().'/';
$filename = $file->getClientOriginalName();
$path = public_path().$filePath;
$file->move($path, $file->getClientOriginalName());