10
回答
1、本地上传图片到服务器,由于重启服务器后图片将丢失,因此上传图片的时候我们把图片怎么存在本地上,然后重启服务器之后进行读取。
利用AWS快速构建适用于生产的无服务器应用程序,免费试用12个月>>>   
本地上传图片到服务器,由于重启服务器后图片将丢失,因此上传图片的时候我们怎么把图片存在本地上,然后重启服务器之后进行读取?
<无标签>
举报
AnyLiem
发帖于2年前 10回/1K+阅
共有10个答案 最后回答: 2年前

引用来自“混世顽童”的评论

你那意思是重新发布了吧,然后web容器下的文件都重置了,图片也丢失了吧。放在发布目录之外吧,然后自己写图片下载显示逻辑。或者动静分离,静态文件单独放在一个web服务里

正解,明显就是这个问题

“将”丢失是什么意思?服务器不保存图片?那还要上传干什么呢?

我假设服务器保存图片的,只是由于某些需要或者原因,重启后删除掉(或丢失)图片,那么解决思路应是这样的:

想要把图片保存在本地,直接操作肯定是不可以的(网页不能随便操纵本地文件),只能通过服务器传过来,作为本地缓存,可以设置过期时间长一点。

这样的话,流程就变成了:

1. 用户上传

2. 服务器保存完毕

3. 用户请求刚刚上传的这张图片(可以是偷偷的,不让用户知道,仅仅是为了解决缓存在本地的需要)

4. 用户把从服务器读取到的图片保存到本体某个目录下(也是静默操作)

5. cookie中(或者其他方式)记录保存在本地的图片的路径

6. 提示上传成功

当然这仅仅是单向的,服务器依然不能从本地获取图片,只能获取地址,

重启之后读取,只能是用户再次访问这个页面时尝试获取第4步保存的图片的地址(可能会有权限问题),或者重新静默上传到服务器

不知道还有没有其他更好的方法,目前我也只能想到这样的了


--- 共有 2 条评论 ---
bigTreee回复 @Leelin :如果是故障,那就不是你担心的问题了,这属于运维的工作,你需要做的就是用户上传这个事件完整,数据正确。至于意外事故,那是另一套解决方案,不是code就能解决的问题。 2年前 回复
AnyLiem因为要显示的话 图片的路径只能在服务器上面取,我的理解是如果服务器出现故障的话图片也就没了。。。 2年前 回复
你应该想明白为什么重启的时候图片会丢失。你想想你到底存哪去了?
--- 共有 2 条评论 ---
Feng_Yu回复 @Leelin : 我还是没明白你要表达的意思,服务器重启之后图片文件怎么会不见了? 2年前 回复
AnyLiem因为以前做本地项目的时候都是把图片存在服务器的(如果不存在服务器上就不能正常访问图片),然后重新启动了服务器之后 里面的图片文件也就都不见了。 2年前 回复

你那意思是重新发布了吧,然后web容器下的文件都重置了,图片也丢失了吧。放在发布目录之外吧,然后自己写图片下载显示逻辑。或者动静分离,静态文件单独放在一个web服务里

上传时候,将上传的 base64  保存到服务器log中,丢失后,利用文件比对的方式,重新转换保存已丢失的图片。。。保存到本地不可取,这种对用户要求太高了
专门用一个服务器,来存放图片吧!!或者在用户上传的同时,在服务器另一个地方做好备份!
顶部