七牛云存储SDK扩展

前些天在使用七牛云存储进行数据上传的过程中,发现七牛提供的SDK仅支持以File的形式进行上传,不支持以InputStream的形式进行上传,特对其进行了相应的扩展,具体扩展如下:

import java.io.InputStream;
import org.apache.http.entity.mime.MultipartEntity;
import org.apache.http.entity.mime.content.InputStreamBody;
import org.apache.http.entity.mime.content.StringBody;
import com.qiniu.api.config.Config;
import com.qiniu.api.io.PutExtra;
import com.qiniu.api.io.PutRet;
import com.qiniu.api.net.CallRet;
import com.qiniu.api.net.Client;

public class QiNiuIoApi {
public static final String UNDEFINED_KEY = "?";
public static final int NO_CRC32 = 0;
public static final int AUTO_CRC32 = 1;
public static final int WITH_CRC32 = 2;
public static PutRet put(String uptoken, String key, InputStream input, PutExtra extra) {
  if (input == null) {
    return new PutRet(new CallRet(400, new Exception("InputStream can not be null.")));
  }
  if (key == null) {
    key = UNDEFINED_KEY;
  }
  MultipartEntity requestEntity = new MultipartEntity();
  try {
    requestEntity.addPart("token", new StringBody(uptoken));
    InputStreamBody fileBody = new InputStreamBody(input, key);
    requestEntity.addPart("file", fileBody);
    requestEntity.addPart("key", new StringBody(key));
    if (extra.checkCrc != NO_CRC32) {
      if (extra.crc32 == 0) {
        return new PutRet(new CallRet(400, new Exception("no crc32 specified!")));
      }
      requestEntity.addPart("crc32", new StringBody(extra.crc32 + ""));
    }
  } catch (Exception e) {
    e.printStackTrace();
    return new PutRet(new CallRet(400, e));
  }

  String url = Config.UP_HOST;
  CallRet ret = new Client().callWithMultiPart(url, requestEntity);
    return new PutRet(ret);
  }
}
时间: 2024-11-08 23:27:33

七牛云存储SDK扩展的相关文章

七牛云存储Python SDK使用教程 - 上传策略详解

文 七牛云存储Python SDK使用教程 - 上传策略详解 七牛云存储 python-sdk 七牛云存储教程 jemygraw 2015年01月04日发布 推荐 1 推荐 收藏 2 收藏,2.7k 浏览 本教程旨在介绍如何使用七牛的Python SDK来快速地进行文件上传,下载,处理,管理等工作. 前言 我们在上面的两节中了解到,客户端上传文件时,需要从业务服务器申请一个上传凭证(Upload Token),而这个上传凭证是业务服务器根据上传策略(PutPolicy)来生成的,而这个生成过程中

用ueditor上传图片、文件等到七牛云存储

ueditor上传文件,是用数据流的形式上传的. 而七牛云存储官方文档中,只提供了文件路径上传的方式. 但是,仅仅是在官方文档中写了这一种方式. 事实上,利用VS的对象管理器,打开Qiniu的dll,我们可以看到以下东西: 其实Qiniu提供的SDK中,是可以利用文件流上传文件的. 所以,根据官方文档提供的案例,我们可以将上传改写成下面的样子: /// <summary> /// 上传文件 /// </summary> /// <param name="key&qu

DjangoUeditor 使用七牛云存储

DjangoUeditor 是一个相当赞的django 富文本编辑器,你可以在 https://github.com/zhangfisher/DjangoUeditor 查看相关信息. 我一直想着把DjangoUeditor 的图片和文件存储修改为七牛云存储,但又觉得自己js水平太菜,所以就一直拖延到现在, 其实我根本没改js. 好了,下面不废话,开始. 一.文件上传到七牛 在修改 DjangoUeditor 存储到七牛之前,我第一步要尝试的,就是本地文件上传到七牛. 这一步需要七牛的sdk h

第一个go的web程序;调用七牛云存储的音频api问题解决;条件搜寻文件里的内容

package main import ( "html/template" "io" "io/ioutil" "log" "net/http" "os" "path" "runtime/debug" ) const ( ListDir      = 0x0001 UPLOAD_DIR   = "./uploads" TEMPLA

【Uploadify】远程上传图片到【七牛云存储】

1.下载Uploadify版本3.2.1 2.下载七牛SDK 解压后将 qiniu 文件夹copy到uploadify文件夹下 3.修改uploadify.php文件 <?php $verifyToken = md5('unique_salt' . $_POST['timestamp']); if (!empty($_FILES) && $_POST['token'] == $verifyToken) { $tempFile = $_FILES['Filedata']['tmp_na

ueditor上传图片到七牛云存储(form api,java)

转:http://my.oschina.net/duoduo3369/blog/174655 ueditor上传图片到七牛云存储 ueditor结合七牛传图片 七牛的试炼 开发前的准备与注意事项说明 Let's rock 与ueditor结合前的准备工作 首先从表单开始 生成token 建立图片空间 生成token 上传流程 集成ueditor 将ueditor中的图片模块的在线管理功能和七牛结合 ueditor上传图片到七牛云存储 重要说明,本人已不做java多年,请不要加qq再问我java的

七牛云存储还有一个独一无二的特性——支持用户将文件从客户端直传到云服务器中

目前七牛已经拥有数千家客户,你会发现其中有很多都是像知乎.Weico.Camera360.美图秀秀.蝉游记和Vida等UGC(用户产生内容)类产品,尤其是在图片社交领域.这是因为,除了我在前面所说的“云存储”比传统方案更节省成本外,七牛云存储还有一个独一无二的特性——支持用户将文件从客户端直传到云服务器中.因为我看过蝉游记CTO Quake撰文写过这一特性,所以就直接引用他的原文来做说明: 常见的云存储上传文件流程一般如下: 用户 =>应用服务器 =>云存储提供商 这样多了一次上传的流程,和本

WP集成七牛云存储(原创)

借助:七牛镜像存储 WordPress 插件 https://wordpress.org/plugins/wpjam-qiniu/ 安装本插件1.4.5及以上版本,请先安装并激活WPJAM BASIC插件.如果是使用1.4.5以下版本,WPJAM BASIC插件已包含七牛插件,如果启用WPJAM BASIC插件,请先停用插件. 个人总结: 1.在七牛设置一个公开的空间 2.绑定域名在加速域名这里填写自己的网站的二级域名,比如:cdn.yoursite.com .最后点击创建. 3.去你的网站域名

PHP使用七牛云存储之图片的上传、下载、303重定向教程,CI框架实例

网上关于七牛云存储的教程除了官网上的API文档,其他的资料太少了.研究了下API之后,现在已经能实现图片的上传和下载及上传之后的重定向. 首先本篇文章实现的功能如下: 1.利用表单上传功能,用户可以点击选择文件按钮,选择本地的一个文件,同时设定上传的图片的名称,点击上传按钮可以上传并存储到七牛云存储. 2.在点击上传时会检测文件的后缀名,限制为jpg和png格式存储. 3.上传成功后跳转到自己设定的一个URL,并传回文件信息,如文件名.而不是显示七牛白花花的json显示页面. 好啦,那我们开始吧