好哥哥萌
最近自己在做一个web项目
涉及到了类似论坛,博客类的图片管理
用户或者博主可以上传图片,然后放到一个指定的目录下通过一个静态链接来返回资源
上传图片,指定静态资源,控制器的一些操作我都是会的。。
但是有一个问题就是这个部分怎么实现比较“规范”
怎样实现与系统的耦合度比较低,并且方便迭代
好哥哥萌
最近自己在做一个web项目
涉及到了类似论坛,博客类的图片管理
用户或者博主可以上传图片,然后放到一个指定的目录下通过一个静态链接来返回资源
上传图片,指定静态资源,控制器的一些操作我都是会的。。
但是有一个问题就是这个部分怎么实现比较“规范”
怎样实现与系统的耦合度比较低,并且方便迭代
像是论坛,博客之类的静态资源存储。不管是存储在本地,还是存储在云。都建议使用一个独立的域名来访问。
例如,springboot.io
论坛的图片资源,就建议用 image.springboot.io
来访问,并且入库存储。
这样有一些好处。对于以后图片资源的迁移,不用修改数据库中存储的资源访问路径。只需要修改 image.springboot.io
的DNS解析即可。
那么可以使用Nginx在同一个端口反向代理静态资源和APP应用程序,使用不同域名区分。
类似于阿里云OSS,云存储。都是可以绑定自己的域名。
我也不知道什么规范代码。你可以定义一个接口。对资源文件的CRUD方法进行抽象类似于:
public String upload(...);
public String delete(...);
public String copy(...);
然后提供N个实现,例如资源存储在本地的实现,存储在阿里云OSS的实现,存储在腾讯云的实现。通过系统在后台对这些实现进行维护。
如果系统很大,可以把上传功能单独的抽取出来。作为一个服务为进行维护。
以上就是个人拙见了。
懂了,如果资源在云端或者本地静态资源的话用域名+路径就行了
那如果静态资源访问的控制器写在系统内,资源储存在本地的话(为了记录log或者控制权限等操作)
比如我的图像路径是/public/images/xx/xx/xxx.png
那我在控制器的部分怎么样写比较好?
是匹配/public/images/**
路径后从资源文件夹内拿吗
没懂。
就是您的回答解决了上传和操作的各种问题
但是我这里还有一个获取图片的问题
怎么样去设计一个控制器来返回图片资源
静态资源的访问,不要经过应用程序的控制台。使用静态服务器(Nginx之类的)比较好。
除非是你需要限制用户对静态资源的访问。
通过系统控制,你可以通过request
对象,获取倒 uri
信息。通过uri,可以定位到本地的图片资源文件。在鉴权后,IO响应给客户端就是了。
是的是的!
这个部分只需要简单的设计和映射到本地文件夹就行了吧?
有没有什么特殊的设计规范
好像这玩意儿没啥规范。就是个简单的鉴权和文件IO。 。你可以考虑用阿里云的云存储,它有一个STS权限控制。你程序只负责鉴权,如果鉴权成功。就在OSS申请一个临时访问的Token。然后给客户端去访问就行了。不需要自己去IO文件。应用程序,不擅长IO这种静态资源。
好的!谢谢好哥哥了!