上传图片路径问题?

为啥把绝对路径保存起来呢 不是应该是相对路径嘛, 如果域名换了怎么办?

《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
Summer
最佳答案

拼接图片域名有两种方法,第一种在读取的时候拼;第二种是写入的时候拼。

两种方法各有所长,第一种灵活点,第二种性能更优更实用点。

在我们这个项目里,更换域名很有可能是永远不会遇到的事情,而头像读取,每个页面都会遇到,列表页甚至是大量的头像读取,也就是说一个页面几十次甚至更多阅读都有,何必浪费 CPU 资源呢。

当然,现实项目中,还是要依照不同情况选择不同的方案,最适合项目的是最优的,在知道这两种方案各自优缺点后从中选择。

@stefen
@aurora
@zssen
@Jeffrey

5年前 评论
讨论数量: 12
Summer

拼接图片域名有两种方法,第一种在读取的时候拼;第二种是写入的时候拼。

两种方法各有所长,第一种灵活点,第二种性能更优更实用点。

在我们这个项目里,更换域名很有可能是永远不会遇到的事情,而头像读取,每个页面都会遇到,列表页甚至是大量的头像读取,也就是说一个页面几十次甚至更多阅读都有,何必浪费 CPU 资源呢。

当然,现实项目中,还是要依照不同情况选择不同的方案,最适合项目的是最优的,在知道这两种方案各自优缺点后从中选择。

@stefen
@aurora
@zssen
@Jeffrey

5年前 评论
Summer

拼接图片域名有两种方法,第一种在读取的时候拼;第二种是写入的时候拼。

两种方法各有所长,第一种灵活点,第二种性能更优更实用点。

在我们这个项目里,更换域名很有可能是永远不会遇到的事情,而头像读取,每个页面都会遇到,列表页甚至是大量的头像读取,也就是说一个页面几十次甚至更多阅读都有,何必浪费 CPU 资源呢。

当然,现实项目中,还是要依照不同情况选择不同的方案,最适合项目的是最优的,在知道这两种方案各自优缺点后从中选择。

@stefen
@aurora
@zssen
@Jeffrey

5年前 评论

确实是保存了的,应该是没有考虑更换资源服务器的情况。不过这不是问题,真的要将资源重新布置,渲染之前做个正则匹配,把域名处理掉然后用正确的域名替换就ok了。

5年前 评论

首先要理解整个项目是在本地的 vagrant 中运行的,所以保存的域名实际也是指向你的本地(这就是我在 #1 中的意思)。

线上的项目域名换了就更改 config 中的配置,静态资源能被访问,显示出来也肯定是绝对路径的。

5年前 评论

保存的是你的本地磁盘的绝对路径,跟域名没关系。

5年前 评论

@zssen

file
确实保存了

5年前 评论

@aurora 请仔细看封装的代码注释,里面有这一段

// 将图片移动到我们的目标存储路径中
        $file->move($upload_path, $filename);

        return [
            'path' => config('app.url') . "/$folder_name/$filename"
        ];

文件存储的路径与你在 /config/app.php 中的 url 的值有关,http://localhost 就是你的本地,域名换了在这儿更改相应的域名就行。

5年前 评论

@zssen 楼主的意思是不应该保存域名,保存后面的路径就好了,较真。

5年前 评论

@aurora 百度下什么是 绝对路径 什么是 相对路径 再来说我是不是较真。楼主想存 相对路径 就要重新封装保存路径的部分,不是只保存后面的路径就是保存 相对路径

5年前 评论

@zssen 我有提到绝对路径吗,绝对路径跟域名有啥关系。。。

5年前 评论

一般在正式项目中都是保存绝对路径,但是不包含域名比较合适

5年前 评论

@Summer 大大,是不是我没理解到?相对路径也可以正常读取图片呀?

file

数据库:
file

5年前 评论
在模型中加上这样一段,查询数据时获取图片就是拼接后的路径,注:FurImage是数据库字段
//查询时修改字段格式或者值【自动触发,无需调用】
public function getFurImageAttribute($field)
{
    return $this->attributes[$field] = config('constants.default_uri').$field;
}
4年前 评论

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