七牛上传的响应处理大全

七牛上传的响应处理大全

Build Status

普通上传

1,用户使用七牛的sdk上传。

用户选择一个自己的所用语言的sdk来上传。举例说明下(Objective-C SDK ),首先用户要按照文档:sdk链接 来搭建上传的本地环境。然后执行上传操作

#import <QiniuSDK.h>
...
    NSString token = @"从服务端SDK获取";
    QNUploadManager *upManager = [[QNUploadManager alloc] init];
    NSData *data = [@"Hello, World!" dataUsingEncoding : NSUTF8StringEncoding];
    [upManager putData:data key:@"hello" token:token
        complete: ^(QNResponseInfo *info, NSString *key, NSDictionary *resp) {
        NSLog(@"%@", info);
        NSLog(@"%@", resp);
    } option:nil];
...

注意:token是要从服务端获取的,服务端指的是:java,c# ,php后端语言(使用七牛的sdk搭建后生成token传送给客户端使用)

响应信息:
(1)NSLog(@”%@”, info)这段代码用来打印七牛用户上传到七牛。我们返回给你的response header信息 例如:

<QNResponseInfo: 0x16505660, status: 200, requestId: sh4AADXFqN73NOAT, xlog: s.ph;s.put.tw;s.put.tr;s.put.tw;s.put.tr;s.ph;s.put.tw;s.put.tr;s.ph;PFDS;PFDS:1;PFDS:2;rdb.g/no such key;DBD/404;DBG/404;v4.exist:1/Document not found;rs12_5.ins:1;qtbl.ins:2;mc.s;RS:3;rs.put:4;rs-upload.putFile:8;QINIUPROXY:137;UP.CB:138;UP:148, xvia: (null), host: upload.qiniu.com 
duration:0.496816 s error: (null)>

其中status:200代表上传成功。requestId代表请求的唯一表示,是七牛自定义的header。xvia代表上传经过的cdn节点信息。host是你上传的域名。duration代表上传的时长,不是太准确。error代表上传的报错信息,是客户端的崩溃报错信息,用来判断客户端代码问题。
(2)NSLog(@”%@”, resp)用来打印七牛的响应信息response content。举例:
{“hash”: “”, “key”: “”}

2,用户直接用表单上传。
<form method="post" action="http://upload.qiniu.com/"
 enctype="multipart/form-data">
  <input name="key" type="hidden" value="<resource_key>">
  <input name="x:<custom_name>" type="hidden" value="<custom_value>">
  <input name="token" type="hidden" value="<upload_token>">
  <input name="file" type="file" />
  <input name="crc32" type="hidden" />
  <input name="accept" type="hidden" />
</form>

注意:token也是要服务端后台生成,传给前端获取到,才能使用。上传成功后会跳到另外一个页面显示服务端的响应信息例如 :

{"key": "FlA0_UehOWe1r8MvSViNPoCn1I6Q", "hash": "FlA0_UehOWe1r8MvSViNPoCn1I6Q", "w": 400, "h": 300,"location"="愛してる"}

html form上传跳转这是原来表单上传的弊端。现在可以通过flash插件上传来防止跳转。或者使用html5。

3,用户上传,token中带有retunbody参数。
returnBody 要求是合法的 JSON 文本。如:{"key": $(key), "hash": $(etag), "w": $(imageInfo.width), "h": $(imageInfo.height)}

响应内容:

{"key": "liuhanlin", "hash": "FmMG7vzZayClmSqzAuOd_F-tqm07", "w": 418, "h": 770}
4,用户上传,token中带有callbackUrl与callbackBody。
callbackBody 要求是合法的 url query string。如:key=$(key)&hash=$(etag)&w=$(imageInfo.width)&h=$(imageInfo.height)。

callbackUrl与callbackBody必须要配合使用。并且设置这两个参数后,如果你设置了returnbody是没有用的。会被callbackbody覆盖。

注意:callbackurl是要你们自己的服务器起来一个可以接收http post请求的公网url(即可以在公网上有映射地址),上传完成后,我们的服务器会将你在callbackbody想要获得的信息,发送给你的业务服务器的callbackurl上。同时你的callbackurl必须要响应给我们的服务器一个200响应。响应内容是一个json字符串。如果不是一个合法的json字符串。会提示状态码为579的错误

{"error":"{\"callback_url\":\"http://125.37.161.211:18080/uploader/qiniu-callback\", 此处略 ",\"err_code\":200,\"error\":\"unexpected response\"}"}

注意:此处的erro_code=200是代表你的服务器是正常的,只是你响应的信息不正常。如果这个参数是5**,代表你的业务服务器已经挂掉了。

响应的信息为:

{"key": "liuuhanlin", "hash": "FmMG7vzZayClmSqzAuOd_F-tqm07", "w": 418, "h": 770}
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要将文件上传七牛云,需要进行以下步骤: 1. 注册七牛账号,创建自己的空间 2. 引入七牛Java SDK 3. 构建认证对象Auth 4. 构建上传管理器UploadManager 5. 调用UploadManager的put方法上传文件 以下是一个简单的示例代码: ```java import java.io.File; import com.qiniu.util.Auth; import com.qiniu.storage.UploadManager; import com.qiniu.storage.Configuration; import com.qiniu.common.QiniuException; import com.qiniu.http.Response; public class QiniuUploader { //设置好账号的ACCESS_KEY和SECRET_KEY private static final String ACCESS_KEY = "your_access_key"; private static final String SECRET_KEY = "your_secret_key"; //要上传的空间 private static final String BUCKET_NAME = "your_bucket_name"; //上传文件的路径 private static final String FilePath = "/home/qiniu/test.png"; public static void main(String args[]) { //构造一个带指定Zone对象的配置类 Configuration cfg = new Configuration(Zone.zone0()); //...其他参数参考类注释 UploadManager uploadManager = new UploadManager(cfg); //生成上传凭证,然后准备上传 Auth auth = Auth.create(ACCESS_KEY, SECRET_KEY); String upToken = auth.uploadToken(BUCKET_NAME); try { //调用put方法上传 Response res = uploadManager.put(FilePath, null, upToken); //打印返回的信息 System.out.println(res.bodyString()); } catch (QiniuException e) { Response r = e.response; // 请求失败时打印的异常信息 System.out.println(r.toString()); try { //响应的文本信息 System.out.println(r.bodyString()); } catch (QiniuException e1) { //ignore } } } } ``` 需要注意,上传文件的路径需要自行修为本地文件的路径。同时,ACCESS_KEY和SECRET_KEY需要替换成你自己的七牛账号的密钥。BUCKET_NAME则需要替换成你自己的空间名。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值