文件流数组上传到七牛云

Posted 根目录97

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了文件流数组上传到七牛云相关的知识,希望对你有一定的参考价值。

首先要注册七牛云,申请个空间,获得密钥、等东西,引入官方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 }

 

 

 

以上是关于文件流数组上传到七牛云的主要内容,如果未能解决你的问题,请参考以下文章

如何上传图片到七牛云

小程序上传文件到七牛云

ThinkPHP6上传图片七牛云 如何上传文件到七牛云对象储存cos

Canvas保存图片到七牛云

Canvas保存图片到七牛云

如何将图片上传到七牛云平台?