七牛---Java SDK常见问题总结
2016-06-11 16:22
489 查看
很多用户在使用七牛中遇到各种JAVA SDK的问题,这里总结一些常见的问题:
http://7xn15i.com1.z0.glb.clouddn.com/gson-2.3.1.jar
http://7xn15i.com1.z0.glb.clouddn.com/okhttp-3.2.0.jar
http://7xn15i.com1.z0.glb.clouddn.com/qiniu-java-sdk-7.1.0.jar
http://7xn15i.com1.z0.glb.clouddn.com/okio-1.6.0.jar
这里具体解释下官网上关于覆盖上传参数的设置的情况:
覆盖的意思是不同文件(文件的hash不同)同文件名的上传,同文件同文件名上传不属于覆盖上传。上传主要取决于上传过程中设置的scope的形式,如果scope为bucket的形式,那么就不允许覆盖上传,如果scope为bucket:key的形式,则表示可以覆盖上传,默认情况下insertOnly参数是0,如果设置了insertOnly参数为非0,那么不论scope为什么形式都不能覆盖上传。
断点续传的要点是需要new一个Recorder对象并且传入一个记录断点的位置(指定文件夹或的File对象), 然后实例化UploadManager对象的时候传入这个Recorder对象,上传过程中会将上传块的信息记录在断点记录的文件中,上传完成后记录值会消失。
这里主要再具体解释下几种错误的状态码:
1).403
这个分为以下两种情况:
一:putPolicy中bucket:key与上传方法中的key不同,报错:
以下为出现问题的具体的demo:
auth.uploadToken中指定的key和uploadManager.put中设置的key值不同导致403
二:putPolicy中设置了limited mimeType,报错:
以下为出现问题的具体的demo:
FilePath如果为txt文件,则上传会报错。
2).579
579表示上传的时候设置了回调,上传是成功的,但是回调是失败的,这种情况需要首先排除下用户自己服务器是否是正常的,可以自己构造一个回调的请求(例如用curl来模拟),看服务器是否可以正常收到这个请求:
eg:curl -vX POST “URL” -d “name=123.jpg”
用户那边如果能够正常打印出该内容,说明用户的接收程序是没有问题的。
如果没有问题的话可以将token和reqid提供下。
另外可以参考下这里的文章下:http://blog.csdn.net/netdxy/article/details/49023099
3).401
一、报错:{“error”:”expired token”},{“error”:”token out of date”}
处理方法:
二、报错:{“error”:”bad token”,”reqid”:”t1wAAHuwANZHl9YT”,”details”:[“UP:4/401”],”code”:401}
处理方法:
1.常见demo
常见demo可以参考: http://developer.qiniu.com/code/v7/sdk/java.html#upload2.jar包依赖关系:
可以使用Maven或者Gradle来导入依赖包,或者直接导入相应的jar包,以下为依赖的jar包关系:http://7xn15i.com1.z0.glb.clouddn.com/gson-2.3.1.jar
http://7xn15i.com1.z0.glb.clouddn.com/okhttp-3.2.0.jar
http://7xn15i.com1.z0.glb.clouddn.com/qiniu-java-sdk-7.1.0.jar
http://7xn15i.com1.z0.glb.clouddn.com/okio-1.6.0.jar
3.有关覆盖上传:
关于覆盖上传,可以参考这里的demo:http://developer.qiniu.com/code/v7/sdk/java.html#upload-cover这里具体解释下官网上关于覆盖上传参数的设置的情况:
覆盖的意思是不同文件(文件的hash不同)同文件名的上传,同文件同文件名上传不属于覆盖上传。上传主要取决于上传过程中设置的scope的形式,如果scope为bucket的形式,那么就不允许覆盖上传,如果scope为bucket:key的形式,则表示可以覆盖上传,默认情况下insertOnly参数是0,如果设置了insertOnly参数为非0,那么不论scope为什么形式都不能覆盖上传。
4.有关断点上传:
可以参考断点上传的demo:http://developer.qiniu.com/code/v7/sdk/java.html#upload-point断点续传的要点是需要new一个Recorder对象并且传入一个记录断点的位置(指定文件夹或的File对象), 然后实例化UploadManager对象的时候传入这个Recorder对象,上传过程中会将上传块的信息记录在断点记录的文件中,上传完成后记录值会消失。
//设置断点记录文件保存在指定文件夹或的File对象 String recordPath = "/.../..."; //实例化recorder对象 Recorder recorder = new FileRecorder(recordPath); //实例化上传对象,并且传入一个recorder对象 UploadManager uploadManager = new UploadManager(recorder);
5.常见状态码分析:
具体的状态码的信息可以参考这个文档下: http://developer.qiniu.com/article/developer/responsebody.html#http-code这里主要再具体解释下几种错误的状态码:
1).403
这个分为以下两种情况:
一:putPolicy中bucket:key与上传方法中的key不同,报错:
{"error":"key doesn't match with scope"}
以下为出现问题的具体的demo:
//token中设置上传的文件名为test.txt String token = auth.uploadToken("javademo", "test.txt",3600,null,true);(生成token代码) //put方法中设置上传的文件名为text.jpg Response r = uploadManager.put(FilePath,"text.jpg", token,null,null, true);(上传代码段)
auth.uploadToken中指定的key和uploadManager.put中设置的key值不同导致403
二:putPolicy中设置了limited mimeType,报错:
{"error":"limited mimeType: this file type is forbidden to upload"}
以下为出现问题的具体的demo:
String token = auth.uploadToken("javademo", "test.txt",3600,new StringMap().put("mimeLimit", "image/*"),true); Response r = uploadManager.put(FilePath, "test.txt", token,null,null, true);
FilePath如果为txt文件,则上传会报错。
2).579
579表示上传的时候设置了回调,上传是成功的,但是回调是失败的,这种情况需要首先排除下用户自己服务器是否是正常的,可以自己构造一个回调的请求(例如用curl来模拟),看服务器是否可以正常收到这个请求:
eg:curl -vX POST “URL” -d “name=123.jpg”
用户那边如果能够正常打印出该内容,说明用户的接收程序是没有问题的。
如果没有问题的话可以将token和reqid提供下。
另外可以参考下这里的文章下:http://blog.csdn.net/netdxy/article/details/49023099
3).401
一、报错:{“error”:”expired token”},{“error”:”token out of date”}
处理方法:
1、将token的有效期设置的长一些。对于比较大的文件,可以适当加长有效期(默认是3600秒) 2、看下自己的服务器时间是否是联网时间。如果时间不准,导致签名后的结果可能已经是过期的了 3、建议客户每次上传都重新请求一次上传token。或者设置的时间长些
二、报错:{“error”:”bad token”,”reqid”:”t1wAAHuwANZHl9YT”,”details”:[“UP:4/401”],”code”:401}
处理方法:
1、检查密钥(ak,sk复制黏贴有误)信息是否正确。 2、数字签名错误(签名方法是自己写的), 建议使用sdk中封装的方法。 3、检查上传参数,上传token由三部分组成(由冒号隔开),最后一段,用base64解码,可以看到你的上传策略中的参数,如果参数有问题也会报401。 4、如果使用我们的sdk生成的token出现的问题,把token给我们(七牛后台耳机图标:提交工单), 如果是自己写的,请检查token生成的相关代码。
相关文章推荐
- Java虚拟机(二):垃圾收集器
- java垃圾回收的一些简单知识
- JAVA学习总结十五
- [Java]Session,Cookie知识与应用
- JavaWeb学习笔记之Servlet九大内置对象
- 三大框架-------->struts2 OGNL表达式
- leetcode-java-198. House Robber
- JavaWeb学习笔记之Mybatis关键对象
- Spring源码阅读之Resource接口
- Spring中出现The prefix “xxxx” for element “xxxxxx”is not bound.即一些标签不提示而且你又找不到dtd约束文件
- Ubuntu 15.04 下apt-get安装JDK
- Spring提供的单元测试
- leetcode 113. Path Sum II-路径和|回溯算法
- (转)java 从jar包中读取资源文件
- java的常见异常与错误总结
- Hibernate4关系映射总结
- 深入理解Java国际化
- Java---俄罗斯方块小游戏
- Java---俄罗斯方块小游戏
- 国际化: 理解Java平台上的Locale