关闭

七牛云存储之上传回调

标签: 七牛上传回调
2097人阅读 评论(4) 收藏 举报
分类:

概述:

在实际项目开发中,通常都需要将上传的文件保存其链接到数据库,然后再通过数据库存储的链接来对数据进行显示,查看,下载,播放等等操作;那么如何来获取上传后的文件的资源链接?OK,我们可以通过回调来解决。

思路:

  • 将存储空间绑定一个CDN加速域名
  • 指定回调的URL和返回数据字段
  • 通过域名拼接文件名访问资源,或者针对返回数据,做其他相关操作(根据实际需求)

示例:

1.空间绑定CDN加速域名:

首先创建cdn加速域名,然后选中需要绑定cdn加速域名的空间,在“加速域名”中填写创建好的cdn加速域名,最后点击创建按钮即可,如图所示:
这里写图片描述

因为我已经有了,所以上图只是为了演示,最终结果如下:
这里写图片描述

2.在程序中指定回调的URL和返回数据字段:

这两个需要在程序获取uptoken时,通过参数(StringMap)的形式进行设置,完整程序如下:

package com.qiniu.kodo;

import com.qiniu.base.AccountMgr;
import com.qiniu.common.QiniuException;
import com.qiniu.http.Response;
import com.qiniu.storage.UploadManager;
import com.qiniu.util.Auth;
import com.qiniu.util.StringMap;


/**
 * 上传并回调
 * @author xuhuanchao
 *
 */
public class UploadCallback {

    //创建Auth对象
    Auth auth = Auth.create(AccountMgr.ACCESS_KEY, AccountMgr.SECRET_KEY);
    UploadManager uploadManager = new UploadManager();

    /**
     * 获取凭证
     * @param bucketName 空间名称
     * @return
     */
    public String getUpToken(String bucketName) {
        return auth.uploadToken(bucketName, null, 3600, new StringMap()
                .put("callbackUrl", "http://c0d85f2b.ngrok.io/QiniuApi/callback")
                .put("callbackBody", "fileName=$(fname)&fileSize=$(fsize)&bucketName=$(bucket)"));
    }

    /**
     * 上传并回调
     * @param filePath
     * @param bucketName
     * @param key
     */
    public void upload(String filePath, String bucketName, String key) {
        try {
            Response response = uploadManager.put(filePath, key, getUpToken(bucketName));
            System.out.println(response.toString());
        } catch (QiniuException e) {
//          e.printStackTrace();
            Response r = e.response;
            // 请求失败时打印的异常的信息
            System.out.println(r.toString());
        }
    }


    /**
     * 主函数:测试
     * @param args
     */
    public static void main(String[] args) {
        String filePath = "/Users/xuhuanchao/documents/qiniu_frame.jpg";
        String bucketName = "testspace";
        String key = "qiniu_frame.jpg";
        new UploadCallback().upload(filePath, bucketName, key);
    }
}

然后,需要回调接收的服务端处理程序,我通过一个Servlet来实现,上面的程序运行后的结果如下:
这里写图片描述

在Console中输出了回调返回的数据字段:空间名、文件名、文件大小,当然还可以获取跟过其他的一些字段;

3.在浏览器地址栏,通过绑定的CDN加速域名,拼接上文件名,即可访问刚上传的资源,如图所示:
这里写图片描述

说明:

大家可能对程序中,指定的callbackURL的配置有疑问,其实这个是通过ngrok工具来实现的;针对ngrok工具,在博文“使用ngrok将本地Web服务映射到外网”有使用说明的讲解;如图:
这里写图片描述
即:将本地的web服务localhost:8080,映射到外网地址http://c0d85f2b.ngrok.io/QiniuApi/callback

1
0
查看评论

七牛云开发-简单的文件上传

登陆官网申请账号,然后建立对象储存空间Bucket 。 作为练习建立公开空间即可 若建立私有的将采取支付宝授权,授权后受到如下邮件信息 之后进入建立的空间则能看见相关信息 前期的准备工作大致就完成了。 Maven创建项目,引入相关资源包。 ...
  • qq_38548730
  • qq_38548730
  • 2017-09-02 15:47
  • 309

七牛文件上传回调以及解析回调参数

可参考七牛官网文档:https://developer.qiniu.com/kodo/sdk/1239/java 实现以下功能要引入七牛的sdk com.qiniu qiniu-java-sdk [7.0.0, 7.0.99] 这是上传的方法 ...
  • qq_27292113
  • qq_27292113
  • 2017-05-10 11:49
  • 1424

七牛---关于回调流程

很多用户不理解七牛的上传回调功能,这篇文章以一个具体的java实例讲解下七牛的回调功能。一般的上传流程是用户获得上传凭证之后直接将资源上传到七牛空间,然后七牛回返回一个上传成功或者失败的信息,用户业务服务器是不清楚这些信息的,可以参考下面的流程图: 另外一种方式是用户在上传的时候设置回调,则七牛会...
  • netdxy
  • netdxy
  • 2015-10-19 20:38
  • 5810

七牛---关于JAVA SDK的各种Demo

覆盖上传:package demo; import com.qiniu.common.QiniuException; import com.qiniu.http.Response; import com.qiniu.storage.UploadManager; import com.qiniu.ut...
  • netdxy
  • netdxy
  • 2015-12-08 18:42
  • 15011

Java 实现七牛云回调

有这样一个需求:android将文件上传到七牛云,并将文件在七牛云存储的信息返回业务服务器处理。七牛云的sdk上有一个模型解决这种需求,这是原理图:然而不幸的是,关于回调上传的demo一直找不到,经过一天的折腾,整理了一个demo。大体流程是这样子的: 1、android向业务服务器请求上传凭证,...
  • change_on
  • change_on
  • 2017-04-26 15:23
  • 983

七牛云存储之上传回调

概述:在实际项目开发中,通常都需要将上传的文件保存其链接到数据库,然后再通过数据库存储的链接来对数据进行显示,查看,下载,播放等等操作;那么如何来获取上传后的文件的资源链接?OK,我们可以通过回调来解决。思路: 将存储空间绑定一个CDN加速域名 指定回调的URL和返回数据字段 通过域名拼接文件名访问...
  • PEACEFUL000
  • PEACEFUL000
  • 2016-08-29 18:38
  • 2097

七牛上传回调显示进度条方法。

1,首先表单上传肯定是没有进度条的。2,其次,各个版本的sdk的封装情况也不一样。封装有进度回调的sdk: Objective-C (iOS/Mac) Java (Android) C# Go JavaScript3,举例说明回调的进度使用情况(c#sdk)。 Resumabl...
  • guoer9973
  • guoer9973
  • 2015-06-16 15:11
  • 4406

七牛云存储上传文件

折腾了一个晚上,终于在   2016-08-06 00:56:22 这个是重要的时间点成功的上传了一张图片,看了好多篇博客,收益都不是很大,但有了个大致的了解。 这http://doc.okbase.net/zrdjqc/archive/169474.html这篇博客中,我co...
  • qq_26684469
  • qq_26684469
  • 2016-08-06 01:45
  • 1587

七牛云存储之覆盖上传

概述: 本地文件修改,然后需要覆盖在七牛存储空间原本已经存在的文件,那么这时需要使用七牛提供的覆盖上传; 问题: 如何实现,以及实现思路? 思路: 1.七牛提供上传策略,指定scope为< bucketName> : < key> 即可实现覆盖上传,如图: 七牛...
  • PEACEFUL000
  • PEACEFUL000
  • 2016-11-15 13:21
  • 2026

七牛云文件上传

最近做的项目需要上传音视频以及图片,刚开始时候是用retrofit上传,说实话,那叫一个简单和爽啊,必须得赞一个。只需要只需要将File往里面一放就ok了。哦哦,貌似有点跑题了。我应该说七牛云上传文件的。哈哈哈(这与足以说明retrofit上传是多么的便利了)。既然retrofit这么的方便简单,还...
  • submit66
  • submit66
  • 2016-12-03 10:09
  • 2373
    个人资料
    • 访问:60432次
    • 积分:1074
    • 等级:
    • 排名:千里之外
    • 原创:42篇
    • 转载:0篇
    • 译文:0篇
    • 评论:21条
    文章分类
    最新评论