关于私有资源的office文档转换的API

我现在有一个私有资源的office文档,test.ppt,需要转换成pdf,然后转换成jpg。

转换pdf的URL如下:
http://my-bucket-name.qiniudn.com/bbbbbbb/test.ppt?odconv/pdf

然后我需要把产生的pdf持久化,试了pfop, 提交请求返回了200,但是去查处理状态,一直是等待处理,两个小时还是如此。

然后又试了同步的saveas,按照saveas的文档,产生了saveas and sign,URL如下:
my-bucket-name.qiniudn.com/bbbbbbb/test.ppt?odconv/pdf|saveas/dGVtcC1jbG91ZDNlZHUtY29tOmJiYmJiYmIvdGVzdHBwdC5wZGY=/sign/MY-ACCESS-KEY:TWVVVkkzLzhEMUtPVndKN25nM29lWElXTnZNPQ==

因为是私有资源,我的理解是要对整个URL,而不仅仅是加saveas之前的URL,进行下载凭证处理。文档在这个地方很不清楚。所以又按照下载凭证的文档产生了下载token,因为是在nodejs环境下,用了如下七牛SDK methods:

baseUrl = qiniu.rs.makeBaseUrl domain, newKey
policy = new qiniu.rs.GetPolicy()
realUrl = policy.makeRequest baseUrl

domain是my-bucket-name.qiniudn.com部分,key是:

bbbbbbb/test.ppt?odconv/pdf|saveas/dGVtcC1jbG91ZDNlZHUtY29tOmJiYmJiYmIvdGVzdHBwdC5wZGY=/sign/MY-ACCESS-KEY:TWVVVkkzLzhEMUtPVndKN25nM29lWElXTnZNPQ==

产生的realUrl是:
http://my-bucket-name.qiniudn.com/bbbbbbb%2Ftestppt.ppt%3Fodconv%2Fpdf%7Csaveas%2FdGVtcC1jbG91ZDNlZHUtY29tOmJiYmJiYmIvdGVzdHBwdC5wZGY%3D%2Fsign%2FMY-ACCESS-KEY%3ATWVVVkkzLzhEMUtPVndKN25nM29lWElXTnZNPQ%3D%3D?e=1407404146&token=X7X:O6p2qYO5VJwf9mUo9Qe4AWpXJoE=

注意URL里面的key部分已经被encoding过了。然后再http get这个URL,返回404.

有几个问题:
1. 对私有资源,做office文档处理的时候,是先做saveas和sign,还是先生成下载凭证再添加saveas部分?
2. 最后http get时候的URL到底是用URLencoding过的还是没有encoding的?

谢谢!

阅读 4.2k
2 个回答
第一个问题吧,saveas操作一般都是和fop操作一起的,然后用管道连接,和生成下载凭证没有很大的关系吧,你是打算处理完再下载的话,那最后下载token肯定得和你处理完的资源的url有关是吧。
第二个问题,下载私有资源必然得带token是吧,token肯定是encoding的是吧,其他部分一般是不加密的。

直接做持久化操作:
fop = "odconv/pdf" 或 putPolicy.persistentOps = "odconv/pdf|saveas/dGVtcC1jbG91ZDNlZHUtY29tOmJiYmJiYmIvdGVzdHBwdC5wZGY="
1.上传策略中指定:
putPolicy.persistentOps = fop
会返回 persistentId,可通过persistentId查询;也可设置回调函数,详见 http://developer.qiniu.com/docs/v6/api/reference/security/put-policy.html
注意指定 persistentPipeline ,使用单独的队列,默认队列可能有很多待处理的任务。

2.已上传文件触发持久化:
bucket=&key=&fops=&notifyURL=&force=&pipeline=
构建请求,详见http://developer.qiniu.com/docs/v6/api/reference/fop/pfop/pfop.html
注意:fops = URLEncoder.encode(fop, "UTF-8"); &pipeline= 使用单独队列
3.访问:
http://developer.qiniu.com/docs/v6/api/reference/fop/pfop/p.html
若使用saveas,请直接通过http://<domain>/<key>访问

在线访问
公共空间: 比如:http://developer.qiniu.com/resource/dive-into-golang.pptx?odconv/pdf
私有空间访问:将 http://my-bucket-name.qiniudn.com/bbbbbbb/test.ppt?odconv/pdf 作为整体执行下载签名,比如: http://yunyue.qiniudn.com/dive-into-golang.pptx?odconv/pdf&e=1438944776&token=acmKu7Hie1OQ3t31bAovR6JORFX72MMpTicc2xje:GyiS5A6LAIEcaBjkBus02JjVYO8=
String url = "http://yunyue.qiniudn.com/dive-into-golang.pptx?odconv/pdf";
GetPolicy getPolicy = new GetPolicy();
String singUrl = getPolicy.makeRequest(url, mac);

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