?关于图片上传存储路径问题

当我设置图片上传路径是
'location' => public_path() . '/uploads/images/avatars/',
存储在数据库中的数据是这样的http://localhost/uploads/images/avatars/5SFcWm64aByovur9A8MlE1gm9VN1tnH6.jpg
这样无法正常显示图片,只有把localhost改成我本项目的虚拟域名才有效果
file
请问这个上传路径应该怎么样设置呢?

《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 7
Jennie

你可以只存 /uploads/images/avatars/xxxx.jpg , 然后显示的时候前面加上 .env 设置的 APP_URL。这样,不管域名怎么变都不影响你正常读取资源。

5年前 评论

谢谢回复,但是如果不加public_path()会直接报错

file
如果我手动加一个虚拟域名larabbs.io替换public_path()还是会报同样的错,这个是什么原因呢?

5年前 评论
Jennie

@lqalbert 你把 .env 里的 APP_URL 设置成 http://larabbs.io,然后设置 'location' => env('APP_URL'). '/uploads/images/avatars/',,这是一个小方法,我没看过教程,你可以看看是否能解决你的问题。

5年前 评论

localhost 只有在 homestead 里才是对应你网站的地址。在主机或者别的计算机中访问你网站应该时域名或者 ip。

5年前 评论

可以适当使用本章学到了的『访问器』,既然『修改器』是setAvatarAttribute 我猜『访问器』应该就是getAvatarAttribute

访问器的使用场景是当数据因为特殊原因存在不一致性时,可以使用访问器进行矫正处理。

按教程中的描述,『访问器』非常适合你这个时候用。

5年前 评论

遇到一样的问题,数据库里面如果存 http://localhost/path.jpg 这样地址的话,那么比如说换了个域名,那么所有的数据库中的图片地址都需要改吗?所以在数据库里面存的都是 uploads/path.jpg这样的

但是在这个后台的编辑用户头像的时候,配置用户文件里面的 avatar.location字段只能填 public_path(),填其它的话,之前用户在编辑的时候图片就会裂掉(图片地址不对),然后这样在新增用户上传头像的时候,上传到服务器的图片又会放在public根目录,强迫症要被逼疯了....

试了一下楼上说的getAvatarAttribute,在用户列表中确实可以返回出 http://domain/path.jpg 这样的结果,但是在编辑用户的时候,字段的内容还是 uploads/path.jpg 这样的,所以还是没有达到想要的效果。。

4年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!