文件流数组上传到七牛云

首先要注册七牛云,申请个空间,获得密钥、等东西,引入官方sdk包,然后再开发文档中找到代码copy进去就可以了。

因为非常简单,我就直接弄上代码了。

  1 package com.qianmo.foru.bean.request;
  2
  3 import com.qianmo.core.common.CommonRequest;
  4 import org.hibernate.validator.constraints.NotBlank;
  5 import org.springframework.web.bind.annotation.RequestParam;
  6 import org.springframework.web.multipart.MultipartFile;
  7
  8 /**
  9  * Created Author: anpei
 10  * Created Time 2017/5/31 0031.
 11  * 用户下单请求
 12  */
 13 public class InsertOrdersRequest extends CommonRequest {
 14     @NotBlank(message = "订单类型不能为空")
 15     private String orderType;//00:跑腿 01:拼车 02:技术 03:其他  04:提现
 16     @NotBlank(message = "订单标题不能为空")
 17     private String demandTitle;//需求标题
 18     @NotBlank(message = "订单内容不能为空")
 19     private String demandContent;//需求内容
 20     @NotBlank(message = "订单地址不能为空")
 21     private String orderAddress;//我的地址
 22     @NotBlank(message = "交易金额不能为空")
 23     private String orderTxnAmt;//交易金额
 24     @NotBlank(message = "手机号不能为空")
 25     private String moblNo;//手机号
 26     @NotBlank(message = "下单人编号为空")
 27     private String userId;//下单人编号
 28
 29     private String goodsBudget;//商品预算
 30
 31     private  MultipartFile[] multipartFiles;//多个文件流
 32
 33     private String favorPrice;//订单交易金额
 34     private String demandPic;//上传图片
 35     private String remark;//是否加急推送 00:加急推送 01:非加急推送
 36     private String testPurpose;//测试环境 no:测试环境 yes:真实环境
 37
 38     public String getTestPurpose() {
 39         return testPurpose;
 40     }
 41
 42     public void setTestPurpose(String testPurpose) {
 43         this.testPurpose = testPurpose.trim();
 44     }
 45     //order_stat 订单状态 00:初始化订单状态01:失败订单02:成功订单03:撤销订单04:订单处理中
 46 //txn_type 交易类型 支付:00 提现:01 退款:02 用户余额支付类型:88
 47
 48     //   需求类型、需求标题、需求内容、上传图片、我的地址、跑腿费用、商品预算、手机号、是否加急推送、
 49     //   需求类型、需求标题、需求内容、上传图片、我的地址、价格、手机号
 50
 51
 52     public String getOrderType() {
 53         return orderType;
 54     }
 55
 56     public void setOrderType(String orderType) {
 57         this.orderType = orderType.trim();
 58     }
 59
 60     public String getDemandTitle() {
 61         return demandTitle;
 62     }
 63
 64     public void setDemandTitle(String demandTitle) {
 65         this.demandTitle = demandTitle.trim();
 66     }
 67
 68     public String getDemandContent() {
 69         return demandContent;
 70     }
 71
 72     public void setDemandContent(String demandContent) {
 73         this.demandContent = demandContent.trim();
 74     }
 75
 76     public String getOrderAddress() {
 77         return orderAddress;
 78     }
 79
 80     public void setOrderAddress(String orderAddress) {
 81         this.orderAddress = orderAddress.trim();
 82     }
 83
 84     public String getFavorPrice() {
 85         return favorPrice;
 86     }
 87
 88     public void setFavorPrice(String favorPrice) {
 89         this.favorPrice = favorPrice.trim();
 90     }
 91
 92     public String getMoblNo() {
 93         return moblNo;
 94     }
 95
 96     public void setMoblNo(String moblNo) {
 97         this.moblNo = moblNo.trim();
 98     }
 99
100     public String getGoodsBudget() {
101         return goodsBudget;
102     }
103
104     public void setGoodsBudget(String goodsBudget) {
105         this.goodsBudget = goodsBudget.trim();
106     }
107
108     public String getDemandPic() {
109         return demandPic;
110     }
111
112     public void setDemandPic(String demandPic) {
113         this.demandPic = demandPic.trim();
114     }
115
116     public String getRemark() {
117         return remark;
118     }
119
120     public void setRemark(String remark) {
121         this.remark = remark.trim();
122     }
123
124     public String getUserId() {
125         return userId;
126     }
127
128     public void setUserId(String userId) {
129         this.userId = userId.trim();
130     }
131
132     public String getOrderTxnAmt() {
133         return orderTxnAmt;
134     }
135
136     public void setOrderTxnAmt(String orderTxnAmt) {
137         this.orderTxnAmt = orderTxnAmt.trim();
138     }
139
140     public MultipartFile[] getMultipartFiles() {
141         return multipartFiles;
142     }
143
144     public void setMultipartFiles(MultipartFile[] multipartFiles) {
145         this.multipartFiles = multipartFiles;
146     }
147 }

这是我写的一个接收ios或者android端传过来的值,文件流数组与其他参数在一起接收,下面是循环数组,实现多张图片上传。

 1  logger.info("进行图片上传");
 2         StringBuffer imgPath = new StringBuffer();
 3         if (null != request.getMultipartFiles()) {
 4             logger.info("——————有图片");
 5             for (MultipartFile file : request.getMultipartFiles()) {
 6                 imgPath.append(ImageUploadUtil.upload(file));
 7                 imgPath.append(",");
 8             }
 9         }else {
10             logger.info("——————没有图片");
11             imgPath.append(Constants.QiniuyunPictures.imgPaths+"aaa.png");
12         }
13         logger.info("——————图片上传成功");
ImageUploadUtil.upload(file); 这句代码是我把上传图片写成了一个工具类,下面是工具类的代码。
 1 package com.qianmo.foru.common;
 2
 3 import com.google.gson.Gson;
 4 import com.qianmo.core.util.QMDateUtil;
 5 import com.qianmo.core.util.QMuuId;
 6 import com.qiniu.common.QiniuException;
 7 import com.qiniu.common.Zone;
 8 import com.qiniu.http.Response;
 9 import com.qiniu.storage.Configuration;
10 import com.qiniu.storage.UploadManager;
11 import com.qiniu.storage.model.DefaultPutRet;
12 import com.qiniu.util.Auth;
13 import org.springframework.web.multipart.MultipartFile;
14
15 import java.io.IOException;
16 import java.io.InputStream;
17
18 /**
19  * Created Author: anpei
20  * Created Time 2017/5/31 0031.
21  * 图片上传 oqt9s3huf.bkt.clouddn.com
22  */
23 public class ImageUploadUtil {
24     public static String upload(MultipartFile multipartFile){
25         String imgPath = "";
26
27         //构造一个带指定Zone对象的配置类
28         Configuration cfg = new Configuration(Zone.zone0());
29 //...其他参数参考类注释
30         UploadManager uploadManager = new UploadManager(cfg);
31 //...生成上传凭证,然后准备上传
32         String accessKey = Constants.QiniuyunPictures.accessKey;//A key
33         String secretKey = Constants.QiniuyunPictures.secretKey;//S key
34         String bucket = Constants.QiniuyunPictures.bucketName;//foru 七牛云空间名
35 //默认不指定key的情况下,以文件内容的hash值作为文件名
36         String key = String.valueOf(QMDateUtil.getYYYYMMDDHHMMSS())+ QMuuId.getFixLenthString(5)+"foruApp.jpg";
37         try {
38             //   byte[] uploadBytes = "hello qiniu cloud".getBytes("utf-8");
39             //   ByteArrayInputStream byteInputStream=new ByteArrayInputStream(uploadBytes);
40             Auth auth = Auth.create(accessKey, secretKey);
41             String upToken = auth.uploadToken(bucket);
42             try {
43                 InputStream inputStream = multipartFile.getInputStream();
44                 Response response = uploadManager.put(inputStream,key,upToken,null, null);
45                 //解析上传成功的结果
46                 DefaultPutRet putRet = new Gson().fromJson(response.bodyString(), DefaultPutRet.class);
47                 System.out.println(putRet.key);
48                 System.out.println(putRet.hash);
49             } catch (QiniuException ex) {
50                 Response r = ex.response;
51                 System.err.println(r.toString());
52                 try {
53                     System.err.println(r.bodyString());
54                 } catch (QiniuException ex2) {
55                     //ignore
56                 }
57             } catch (IOException e) {
58                 e.printStackTrace();
59             }
60         } catch (Exception ex) {
61             //ignore
62             ex.printStackTrace();
63         }
64         key = Constants.QiniuyunPictures.imgPaths+key;
65         return key;
66     }
67 }
 
时间: 2024-07-31 07:25:42

文件流数组上传到七牛云的相关文章

.Net Core实现将文件上传到七牛云存储

功能:将图片上传到七牛云存储 准备工作 注册七牛账号,提交实名认证(基本上1天内内审核通过) 登录七牛后台->对象存储->新建空间 (基本概念:https://developer.qiniu.com/kodo/manual/3978/the-basic-concept) 新建空间后会有免费域名可以使用.但是:测试域名,限总流量,限单 IP 访问频率,限速,仅供测试使用,不能用于自定义域名的 CNAME.建议还是使用自己的已经ICP备案的域名 CDN加速域名(自己的ICP备案的域名)提交后有个处

Tp3如何实现本地视频文件上传到七牛云

对于七牛云的使用,估计有些刚接触开发的技术人员还不太清楚,那么更不要说如何实现本地视频上传到七牛云转储了,其实这个技术并没有想象中的那么困难,下面就来跟大家详细介绍一下流程: 1.首先我们要先去寻找七牛云的SDK网址,打开后直接下载就行了; 2.下载完成之后我们把它放在tp框架的./ThinkPHP/Extend/Vendor/目录下; 3.完成之后,前期的准备工作就完成了,接下来就是自己上手写代码了: 首先肯定是先在模板部分建立一个form表单: *视频上传: 我们就提交到News控制器里的d

图片上传到七牛云

必须要传一个参数类型为 MultipartFile 的 第一步:引入相关配置文件和工具类并导入依赖: qiniu.properties: qiniu.accessKey=xxxxxxxxxxxxx #公钥 qiniu.secretKey=yyyyyyyyyyyyy #密钥 qiniu.bucket=saas #存储空间名称 qiniu.rtValue=xxxxxxx #域名 公钥密钥在这里找 域名这里找: import com.google.gson.Gson; import com.qiniu

Tp3.1 文件上传到七牛云

TP3.1 中不支持Composer 就无法用composer 安装 下载历史的SDK https://github.com/qiniu/php-sdk/releases/tag/v7.0.8 下载下来放到 Think 目录下的Vendor下 进入代码 HTML的代码 <form id="upload" method='post' action="file" enctype="multipart/form-data"> <inp

KindEditor图片上传到七牛云

自己做了一个网站,编辑器用的是KindEditor,平时会涉及到KindEditor自带的图片上传,但是服务器用的是虚拟主机,没多少空间,就一直想着把图片放在免费的云存储空间,之前看KindEditor的源码和七牛的SDK看得云里雾里的,网上搜索又没有类似的解决方法,只好继续看源码自己搞了,弄了整整一个晚上,基本实现了,下面说说我的做法: 版本说明: KindEditor版本:4x 七牛SDK:7.x.x 后端脚本:PHP 先看一下七牛给出的表单模板,在这里file和token这两个表单项是必须

golang gin框架中实现大文件的流式上传

一般来说,通过c.Request.FormFile()获取文件的时候,所有内容都全部读到了内存.如果是个巨大的文件,则可能内存会爆掉:且,有的时候我们需要一边上传一边处理. 以下的代码实现了大文件流式上传. 还非常不完美,但是可以作为参考: upload.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>up

JAVA基础知识之InputStreamReader流 和 将本地文件通过前端上传到服务器上

将本地文件通过前端上传到服务器上 public BaseResponseSwagger resolveFile(@Valid @ApiParam(value = "file")@RequestParam(name = "file",required = true) MultipartFile file){ if(file.isEmpty()){ throw new SoftwareException(ComStatusCodeEnum.COM_PARAM_VALID

WEB版一次选择多个文件进行批量上传(Plupload)的解决方案

WEB版一次选择多个文件进行批量上传(Plupload)的解决方案 转载自http://www.cnblogs.com/chillsrc/archive/2013/01/30/2883648.html 说明:Plupload支持多种浏览器,多种上传方式! 一般的WEB方式文件上传只能使用FileUpload控件进行一个文件一个文件的进行上传,就算是批量上传,也要把文件一个一个的添加到页面,无法如 windows程序一样,一次选择多个文件进行批量上传.这样在某些应用上就显得很不人性化,有时候客户希

使用python实现将截图上传到七牛服务器,并将七牛生成的外部链接添加的剪切板的功能

目的:在使用markdown来记录文档时,不必每次都将截图存到文档中,只需将图片链接存放到文档中,此时就想到了需要使用云服务器和自动上传文件的功能 OS: Ubuntu 15.10 version 0.1: 工具:截图工具shutter, 剪切板操作工具: xsel 源代码: 1 #!/usr/bin/python 2 import time ##时间模块,使用时间戳生成唯一的文件名 3 import commands ##python中的执行shell命令的模块 4 import os ##同