Laravel在图像上返回404

时间:2015-01-20 18:24:21

标签: angularjs rest laravel laravel-4

这应该相当简单,尽管它完全让我感到难过。

我在localhost:8000

上运行了后端Laravel安装

我有一个在localhost:9001上运行的前端Angular应用程序。

我在种子数据中包含了一些“静态”图像(例如。 '1','user.png'),这些图像在我的前端完美呈现(它们也是从我上传图片的确切位置提供的。)

我目前正在提供图片的网址是http://localhost:8000/images/{filename}

我可以从前端到后端上传图像,它们出现在数据库中,图像放在文件系统中,我在前端填充了正确的URL(如前面的URL所示)。

我上传的图片未显示。

在我的日志中,我得到了:

  [2015-01-20 18:13:49] local.ERROR: NotFoundHttpException Route: http://localhost:8000/images/j249ae747ce28c317e02f1fb6d0a10c3.jpg [] []
[2015-01-20 18:13:49] local.ERROR: exception 'Symfony\Component\HttpKernel\Exception\NotFoundHttpException'

我在路线文件中尝试了一种方法,但是当我已经提供一些图像时,却无法理解为什么?

我还在my / images文件夹中将所有权限设置为755。

有什么想法吗?

3 个答案:

答案 0 :(得分:2)

我不确定我是否会遵循您所进行的多系统互动,但我会回到第一个HTTP原则。

尝试直接访问图片网址。

http://localhost:8000/images/j249ae747ce28c317e02f1fb6d0a10c3.jpg

如果浏览器中的错误(或您的日志,如果您未debug设置为true而未开发)

  

local.ERROR:NotFoundHttpException路由:http://localhost:8000/images/j249ae747ce28c317e02f1fb6d0a10c3.jpg

这意味着您的网络服务器无法在images/j249ae747ce28c317e02f1fb6d0a10c3.jpg找到文件,并将请求移交给Laravel。这意味着您需要弄清楚您的网络服务器无法查看该文件的原因。

假设您正在从index.php文件夹

中提供public
  1. 您有public/images/j249ae747ce28c317e02f1fb6d0a10c3.jpg个文件吗?

  2. 肯定?将路径复制并粘贴到终端并粘贴到ls public/images/j249ae747ce28c317e02f1fb6d0a10c3.jpg,以确保您的大脑不会遗漏一些微妙的案例问题

  3. 您的网络服务器日志中是否出现任何错误(不是Laravel&#39)

  4. 您可以在images文件夹中创建text / html文件并提供服务吗?如果没有,那么您可能无法将Web服务器指向您认为的文件夹。

  5. 这样的东西
    http://localhost:8000/images/test.txt
    http://localhost:8000/images/test.html
    

    这样调试的第一个原则应该指向正确的方向。

答案 1 :(得分:1)

问题是您尚未为上传的图片生成网址

尝试像这样访问您的网址

http://localhost:8000/storage/images/j249ae747ce28c317e02f1fb6d0a10c3.jpg

要生成上述网址

在控制器中添加此方法\Storage::disk('public')->url();。此方法访问public中的Config\filesystems.php磁盘阵列,并以以下格式生成URL

    http://localhost:8000/storage/images/j249ae747ce28c317e02f1fb6d0a10c3.jpg

例如,以下方法将图像存储在图像文件夹中并生成图像路径的url。

public function uploadImage(Request $request)
{
    $request->validate(['image'=>'file|image|max:5000']);
    $imageProfile = new ImageProfile();
    if($request->hasFile('image') && $request->file('image')->isValid())
    { 
        $image = $request->file('image')->store('images');
        $imageProfile->image_profile_url = \Storage::disk('public')->url($image);
        $imageProfile->save()
    }
    return response()->json($imageProfile,200);
}

代码在下面返回Json响应

{
    "id": 13,
    "image_profile_url ": "http://127.0.0.1:8000/storage/images/cxlogqdI8aodERsmw74nmEx7BkxkWrnyJLMH7sFj.jpeg",
    "updated_at": "2020-01-13 16:27:37",
    "created_at": "2020-01-13 16:27:37",
}

尝试复制该网址并在邮递员中对其进行测试。

访问链接以了解有关Laravel文件存储的更多信息 Laravel File Storage

希望有帮助。

答案 2 :(得分:0)

laravel 8 

控制器功能

    public function store(Request $request)
    {
         $this->validate($request, [
            'site_title' => 'required',
            'logo_image' => 'required|image|mimes:jpeg,png,jpg,gif,svg|max:2048',
         ]);


        $input['logo_image'] = time().'.'.$request->logo_image->getClientOriginalExtension();
        $request->logo_image->move(public_path('images'), $input['logo_image']);


        $input['site_title'] = $request->site_title;
        //dd($input);
        Site_settings::create($input);


        return back()->with('success','Image Uploaded successfully.');
    }

刀片视图

 <td>
              <img src="{{ url('/images/').'/'.$site_settings->logo_image ?? '' }}" alt="" width="250px" height="auto">
            </td>