在七牛默认的上传策略中,是不允许覆盖已有文件的,这是一种保护机制。但有时候我们确实需要覆盖原有的文件,这应该怎么办呢?下面就来说说如何上传文件时覆盖已有的文件。
要实现这一操作,必须在上传策略中进行配置,然后生成uptoken
。比如,在PHP服务端中,我们有个生成uptoken
的方法,这里我们以CI框架为例。在此之前,建议大家先看看我之前的一篇文章《》,因为载入七牛sdk需要修改一点东西。
//配置七牛云存储,以下三个变量是必须设置的,这里做例子,所以没有写进去 |
这样默认生成的uptoken是默认上传新资源,而不允许覆盖原有的资源。如果要覆盖原有资源,那必须满足两个条件:
- 要保存的key必须和上面
Scope
设置的key严格一致
例如,原先七牛云存储上有一张名为sun.jpg
的图片,我们希望上传新的图片区覆盖它,那就需要这样设置:
//配置七牛云存储,以下三个变量是必须设置的,这里做例子,所以没有写进去 |
这样生成的uptoken
被七牛服务端接收到之后,服务器就会将新上传的图片覆盖掉原有的sun.jpg。
具体的上传策略大家可以去官网看看,虽然七牛的文档写得很多,但也写得相对比较乱,需要多点耐心。
需要注意的,由于七牛存在缓存策略,所以被覆盖的文件不会马上被显示出来,有可能你虽然成功覆盖了原文件,但需要强制刷新浏览器几下,或者在七牛后台手动刷新缓存才能看到最新的文件。
所以我还是建议大家不要使用覆盖的方法去更新文件,最好是重新上传新文件,再将旧的删除,这样新上传的文件能马上读取到。