七牛有图片压缩存储功能吗--saveas用法太麻烦

我看了图片上传策略,持久化存储的相关部分,好像有个用GET签名请求实现的缩略图方案,太麻烦。
我想要这样的功能:我不想让服务器保存超过600K的图片,但也不想直接限制用户只上传600K以上的图片(这样会损失很多上传意愿,毕竟用户不愿意费时压缩图片后再上传),简单思路如下:
在上传策略里设置一个字段,可以指定图片压缩等级及图片压缩后最大值,
这样当用户上传了一个2M的原始图,传到七牛后,七牛直接根据策略里指定的压缩等级和最大值,将上传图压缩至目标图片(比如小于600K),然后存储下来。以后再访问都是这个压缩后的文件。

目前有这个功能吗?

阅读 15.9k
4 个回答

上传之前你肯定能拿到文件的大小譬如2M,加个逻辑如果小于600K,不加管道符处理,如果大于600K,持久化处理或者轻量级的saves对图片进行缩略处理

我的web应用是这样的:手机和电脑终端(jquerymobile框架+html5)以浏览器访问web,当用户上传图片时,web构建网页表单+token给用户,用户点击上传后(此时我用JS可以得到图片的大小,但此时图片还没有被上传到七牛),待图片上传到七牛并返回成功码,,, 此时这个压缩保存指令:

http://t-test.qiniudn.com/Ship.jpg?imageView/2/w/200/h/200|saveas/dC10ZXN0OlNoaXAtdGh1bWItMjAwLmpwZw==/sign/iguImegxd6hbwF8J6ij2dlLIgycyU4thjg-xmu9q:38kMkgw3We96NWSgUHJz9C72noQ= 这个指令,我是应该在用户终端用JS隐藏请求呢?还是在我的web服务器里用php隐藏请求?

用户上传完,我还得再发起个请求来压缩,这个功能不是很搞笑吗(里面还有一堆算法,也不知道有没有现成的API生成,还是得自己手动生成。)
有没有一种方法,用户上传完图片后,不需要额外操作,后台可自动压缩保存的方法?有实现这个需求的例子吗?

目前来说建议在服务端php里面做。七牛的上传支持callback到你的服务器地址,你在这个callback里面去调用saveas就行。因为saveas里面的sign只能用AK/SK做,这意味着在js端做这样的事情不太好,有安全隐患。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
logo
七牛云问答
子站问答
访问
宣传栏