Laravel文件上传NotFoundHttpException

时间:2015-01-07 15:40:24

标签: php laravel laravel-4

我使用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

但同样的错误。可能是什么问题?我检查了uploads文件夹,图像就在那里。

3 个答案:

答案 0 :(得分:3)

您需要添加对public_path帮助程序的调用:

$filePath = public_path() . '/uploads/'.date("Y/m").'/'.time().'/';

否则它会将它放在app根目录中,我想。

答案 1 :(得分:1)

这对我有用:

    $file = Input::file('largeImage');
    $filePath = '/uploads/'.date("Y/m").'/'.time().'/';
    $filename = $file->getClientOriginalName();
    $path = public_path().$filePath;
    $file->move($path, $file->getClientOriginalName());

答案 2 :(得分:0)

好的,所以这是一个路由问题。要解决此特定问题,请定义导航到您文件的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');
}

理论上应该满足您的需求。可能需要修改路径以满足您的需求,但这应该是一般的想法。测试一下,让我知道它是否有效。

注意

这不是处理下载的最佳方式,因为您需要知道所需文件的确切文件名,但它指向正确的方向。