欢迎各位兄弟 发布技术文章
这里的技术是共享的
要实现这一操作,必须在上传策略中进行配置,然后生成uptoken
。比如,在PHP服务端中,我们有个生成uptoken
的方法,这里我们以CI框架为例。在此之前,建议大家先看看我之前的一篇文章《在CodeIgniter框架中使用plupload插件上传文件到七牛云存储》,因为载入七牛sdk需要修改一点东西。
这样默认生成的uptoken是默认上传新资源,而不允许覆盖原有的资源。如果要覆盖原有资源,那必须满足两个条件:
Scope
属性格式为:<bucket>:<key>
Scope
设置的key严格一致例如,原先七牛云存储上有一张名为sun.jpg
的图片,我们希望上传新的图片区覆盖它,那就需要这样设置:
这样生成的uptoken
被七牛服务端接收到之后,服务器就会将新上传的图片覆盖掉原有的sun.jpg。
具体的上传策略大家可以去官网看看,虽然七牛的文档写得很多,但也写得相对比较乱,需要多点耐心。
上传策略:http://developer.qiniu.com/docs/v6/api/reference/security/put-policy.html
需要注意的,由于七牛存在缓存策略,所以被覆盖的文件不会马上被显示出来,有可能你虽然成功覆盖了原文件,但需要强制刷新浏览器几下,或者在七牛后台手动刷新缓存才能看到最新的文件。
所以我还是建议大家不要使用覆盖的方法去更新文件,最好是重新上传新文件,再将旧的删除,这样新上传的文件能马上读取到。
有可能是cdn缓存导致的覆盖上传后,访问到的文件仍然是旧的资源,你可以通过url?v=20150309对资源进行访问,如果是访问到的最新的资源,说明资源覆盖成功了;一般资源的缓存刷新时间是10min开始刷新,24h全网刷新,如果你对资源更新的实时性要求比较高,你可以在空间设置的高级设置中刷新下资源的url,另外也可以采用资源url加上查询参数的方式去访问资源。
来自 http://caiweiming.com/?p=75