这应该相当简单,尽管它完全让我感到难过。
我在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。
有什么想法吗?
答案 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
您有public/images/j249ae747ce28c317e02f1fb6d0a10c3.jpg
个文件吗?
你肯定?将路径复制并粘贴到终端并粘贴到ls public/images/j249ae747ce28c317e02f1fb6d0a10c3.jpg
,以确保您的大脑不会遗漏一些微妙的案例问题
您的网络服务器日志中是否出现任何错误(不是Laravel&#39)
您可以在images文件夹中创建text / html文件并提供服务吗?如果没有,那么您可能无法将Web服务器指向您认为的文件夹。
像
这样的东西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>