急求答案,上传头像到 public 下换为 storage 下,怎么操作?

在上传头像的教程中,我们保存完头像,然后返回一个图片的路径,把这个路径存入数据库avatar字段中。

而教程中的路径使用的是 public 下进行头像存储,所以存入数据的头像的路径就是 localhost/upload/.....

存入路径的 localhost 指向的是public这个文件夹,而我想要存入头像到 storage 文件夹下

这时保存完头像应该返回一个什么样的路径,怎么操作,因为 storage 和 public 是同级目录

而 localhost 指向了 public 内部,存入路径的时候不能去使用 ../ 来存储,这样子会存储成字符串,而并不会被解析为上级目录

我应该怎么操作,急求答案。

《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 5

@Ken 谢谢大佬,成功了,我说下步骤,大家可以看下。
使用 artisan 命令创建链接 php artisan storage:link 它会创建一个链接 from "public/storage" to "storage/app/public"

我在存储文件的时候定义路径是这样的:$file_path = public_path().'/storage'.'/upload'.'/'.$folder.'/'.$user_id;
意思是:获取到 public 的物理路径下的 storage 下的 upload (此时路径已经变为到storage/app/public/upload)下的 $folder 下的 $user_id

这样子文件的存储路径为:项目文件夹/storage/app/public/upload/avatar/7 这是文件夹路径,后面定义文件名
后面的过程不说了,看教程,这里继续返回值 return 的写法:
return $avatar = asset("storage/upload/{$folder}/{$user_id}/{$file_name}");

这里面返回的实际样子是这样的:http://127.0.0.1:8080/storage/upload/avata...
我搭建的端口号为8080,在env中配置的,在网页 image src 访问的时候,域名下的storage就直接指向了storage/app/public 这个地方,这像是 linux 的软连接。就可以正常的加载出来图片

5年前 评论

@Esaiting 如果我不是在storage下面的storage/app/public 下存储的文件,而是在storage/avatar 下存储的头像,是不是就不能使用 php artisan storage:link命令做链接了?

5年前 评论

@jinpeng0314 那在服务器上 Linux 也有创建软连接的命令,去创建一个即可。 看下我写的这个 https://www.cnblogs.com/muwu/p/9029024.htm... 把目标目录换成avatar ,然后在保存的时候,就按我上面说的路径存储试试。

5年前 评论

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