java接受安卓及ios App上传的图片,并保存到阿里OSS

做后台的时候,写了两个方法,分别用来获取安卓和苹果IOS端上传的头像,保存到阿里云OSS图片存储服务器上。(SMM框架)

安卓及H5版本:

 1  /**
 2      * 上传用户头像
 3      */
 4     @RequestMapping("/uploadPhoto")
 5     public R uploadPhoto(@RequestParam("imgFile") MultipartFile imgFile, HttpServletRequest req) throws Exception {
 6         if (imgFile.isEmpty()) {
 7             throw new RRException("上传文件不能为空");
 8         }
 9
10         Integer uid = WebUtils.getUid(req);
11         WfMemberEntity member = memberService.queryObject(uid);
12
13         String newsUrl = "";
14         if (!((MultipartFile) imgFile).isEmpty()) {
15             try {
16                 newsUrl = OSSUtil.addFile(imgFile, "head", Constants.IGM_BUCKET);
17
18             } catch (IOException e) {
19                 e.printStackTrace();
20             }
21         }else {
22             return R.error("上传图片不可为空");
23         }
24         if(member.getHeadimage() == null) {
25              member.setHeadimage(newsUrl);
26              member.setThumbimg(newsUrl);
27              memberService.update(member);
28         }else {
29             // 删除原来图片
30             OSSUtil.delete(member.getHeadimage(), Constants.IGM_BUCKET);
31             member.setHeadimage(newsUrl);
32             member.setThumbimg(newsUrl);
33             memberService.update(member);
34         }
35         System.out.println("*************************************头像路径: "+newsUrl+"***************************************");
36         return R.ok().put("url", newsUrl);
37     }

对应的苹果图片上传版本:

 1  @RequestMapping("/iosUpload")
 2    public R iosUpload(HttpServletRequest req){
 3
 4         Integer uid = WebUtils.getUid(req);
 5         WfMemberEntity member = memberService.queryObject(uid);
 6
 7         String image = req.getParameter("image");
 8           // 将base64 转 字节数组
 9         Base64 base = new Base64();
10         byte[] decode = base.decode(image);
11
12         // 定义图片输入流
13         InputStream fin = new ByteArrayInputStream(decode);
14
15         String newsUrl = "";
16         try {
17             newsUrl = OSSUtil.putFile(fin, "head", Constants.IGM_BUCKET);
18         } catch (IOException e) {
19             e.printStackTrace();
20         }
21         if(member.getHeadimage() == null) {
22              member.setHeadimage(newsUrl);
23              member.setThumbimg(newsUrl);
24              memberService.update(member);
25         }else {
26             // 删除原来图片
27             OSSUtil.delete(member.getHeadimage(), Constants.IGM_BUCKET);
28             member.setHeadimage(newsUrl);
29             member.setThumbimg(newsUrl);
30             memberService.update(member);
31         }
32         System.out.println("*************************************头像路径: "+newsUrl+"***************************************");
33         return R.ok().put("url", newsUrl);
34     }

对应的OSS上传工具:

  1 package com.wfcm.utils;
  2
  3 import java.io.File;
  4 import java.io.FileInputStream;
  5 import java.io.FileNotFoundException;
  6 import java.io.IOException;
  7 import java.io.InputStream;
  8 import java.util.ArrayList;
  9 import java.util.List;
 10
 11 import org.springframework.web.multipart.MultipartFile;
 12 import org.springframework.web.multipart.commons.CommonsMultipartFile;
 13
 14 import com.aliyun.oss.OSSClient;
 15 import com.aliyun.oss.model.ListObjectsRequest;
 16 import com.aliyun.oss.model.OSSObject;
 17 import com.aliyun.oss.model.OSSObjectSummary;
 18 import com.aliyun.oss.model.ObjectListing;
 19 import com.aliyun.oss.model.ObjectMetadata;
 20 import com.wfcm.utils.UUIDGenerator;
 21
 22
 23 /**
 24  * 阿里云分布式存储工具类
 25  * @author lyinlong
 26  *
 27  */
 28 public class OSSUtil {
 29
 30     //初始化client
 31     static OSSClient client = new OSSClient(Constants.OSS_ENDPOINT,Constants.OSS_ACCESS_ID, Constants.OSS_ACCESS_KEY);
 32
 33     /**
 34      * 获取指定文件夹下的文件列表
 35      * @param folderName 文件夹名称(如果获取当前所有, 空字符串)
 36      * @return 文件的所有key
 37      * @throws IOException
 38      */
 39     public static List<String> listBybucket(String bucketName ,String folderName) throws IOException{
 40         // 构造ListObjectsRequest请求
 41         ListObjectsRequest listObjectsRequest = new ListObjectsRequest(bucketName);
 42
 43         // 递归列出fun目录下的所有文件
 44         listObjectsRequest.setPrefix(folderName);
 45
 46         ObjectListing listing = client.listObjects(listObjectsRequest);
 47
 48         List<String> keys = new ArrayList<>();
 49
 50         // 遍历所有Object
 51         for (OSSObjectSummary objectSummary : listing.getObjectSummaries()) {
 52             keys.add(objectSummary.getKey());
 53         }
 54         return keys;
 55     }
 56
 57     /**
 58      * 通过key获取指定的Object
 59      * @param key
 60      * @return
 61      */
 62     public static InputStream getObject(String bucketName, String key){
 63         OSSObject object = client.getObject(bucketName, key);
 64         InputStream objectContent = object.getObjectContent();
 65
 66         return objectContent;
 67     }
 68
 69     /**
 70      * 添加一个文件到指定文件夹
 71      * @param file
 72      * @param folder
 73      * @return 该文件的Key(文件的唯一标识)
 74      * @throws FileNotFoundException
 75      */
 76     public static String putObject(File file , String folder , String bucketName) throws FileNotFoundException{
 77          // 获取指定文件的输入流
 78         InputStream content = new FileInputStream(file);
 79
 80         // 创建上传Object的Metadata
 81         ObjectMetadata meta = new ObjectMetadata();
 82
 83         // 必须设置ContentLength
 84         meta.setContentLength(file.length());
 85
 86         String uuid = UUIDGenerator.getUUID(false);
 87
 88         client.putObject(bucketName, folder+"/"+uuid, content, meta);
 89
 90         return uuid;
 91     }
 92
 93     public static String putFile(InputStream content  , String folder , String bucketName) throws FileNotFoundException{
 94          // 获取指定文件的输入流
 95         //InputStream content = new FileInputStream(file);
 96
 97         // 创建上传Object的Metadata
 98         ObjectMetadata meta = new ObjectMetadata();
 99
100         // 必须设置ContentLength
101         try {
102             meta.setContentLength(content.available());
103         } catch (IOException e) {
104             // TODO Auto-generated catch block
105             e.printStackTrace();
106         }
107
108         String uuid = UUIDGenerator.getUUID(false);
109         client.putObject(bucketName, folder+"/"+uuid+".jpg", content, meta);
110
111         return folder+"/"+uuid+".jpg";
112     }
113
114     public static String addFile(Object file , String folder , String bucketName) throws IOException{
115          InputStream content  = null;
116          ObjectMetadata meta = null;
117          String  extension = "";
118         if(file!=null){
119             if(file instanceof CommonsMultipartFile){
120                 CommonsMultipartFile file1  = (CommonsMultipartFile)file;
121                 //文件扩展名
122                  String fileName = file1.getOriginalFilename();
123                  if(fileName.lastIndexOf(".")!=-1){
124                      extension = fileName.substring(fileName.lastIndexOf("."),fileName.length());
125                  }
126
127                 // 获取指定文件的输入流
128                   content =file1.getInputStream();
129                     // 创建上传Object的Metadata
130                    meta = new ObjectMetadata();
131                     // 必须设置ContentLength
132                     meta.setContentLength(file1.getSize());
133                   // 设置content type
134                     String strContentType = file1.getContentType();
135                     meta.setContentType(strContentType);
136             }
137             else if(file instanceof MultipartFile){
138                 MultipartFile    file2 = (MultipartFile)file;
139                  String fileName = file2.getOriginalFilename();
140                  if(fileName.lastIndexOf(".")!=-1){
141                      extension = fileName.substring(fileName.lastIndexOf("."),fileName.length());
142                  }
143                 // 获取指定文件的输入流
144                   content =file2.getInputStream();
145                     // 创建上传Object的Metadata
146                    meta = new ObjectMetadata();
147                     // 必须设置ContentLength
148                     meta.setContentLength(file2.getSize());
149             }
150             else if(file instanceof File){
151                 File file3 = (File)file;
152                 //文件扩展名
153                  String fileName = file3.getName();
154                  if(fileName.lastIndexOf(".")!=-1){
155                      extension = fileName.substring(fileName.lastIndexOf("."),fileName.length());
156                  }
157
158                 // 获取指定文件的输入流
159                   content =new FileInputStream(file3);
160                     // 创建上传Object的Metadata
161                   meta = new ObjectMetadata();
162                     // 必须设置ContentLength
163                   meta.setContentLength(file3.length());
164             }
165             else {
166                 return null;
167             }
168         }
169         String uuid = UUIDGenerator.getUUID(false);
170
171         client.putObject(bucketName, folder+"/"+uuid+extension, content, meta);
172
173         return folder+"/"+uuid+extension;
174     }
175
176     /**
177      * 删除指定的文件
178      * @param key
179      */
180     public static void delete(String key,String bucketName){
181
182         client.deleteObject(bucketName, key);
183     }
184
185     /**
186      * 新建文件桶
187      * @param bucketName
188      */
189     public static void createBucket(String bucketName){
190         client.createBucket(bucketName);
191     }
192
193 }

原文地址:https://www.cnblogs.com/hero123/p/8719111.html

时间: 2024-08-28 01:41:57

java接受安卓及ios App上传的图片,并保存到阿里OSS的相关文章

IOS APP 上传到AppStore

由于第一次接触要把 app 上传到 AppStore 比较棘手,很多地方不懂,研究了 大半天 终于给上传成功了,现在坐等审核吧,首先把上传到AppStore的流程 整理下 : 第一 :准备证书 (要确保证书安装正确)不然给你个9000 如果你不能确保证书 是 哪个证书,可以把证书全部删掉,然后 重新创建证书 ,回到创建证书界面 选择如下 : 选择证书 点击 "Choose File " 就是用钥匙串生成的 ,如果是默认用钥匙串 就是 "CertificateSigningRe

iOS APP 上传

原地址:http://www.cnblogs.com/uvsjoh/archive/2012/11/14/2769739.html 流程:1 开发好要发布的程序 -- 需要在程序中包含符合要求规格的icon文件https://developer.apple.com/library/ios/#qa/qa2010/qa1686.html2 iTune上注册APP,这一步需要Apple developer IDhttps://developer.apple.com/devcenter/ios/inde

Ios App上传步骤

前言:作为一名IOS开发者,把开发出来的App上传到App Store是必须的.下面就来详细介绍下具体流程. 1.打开苹果开发者中心:https://developer.apple.com 打开后点击:Member Center 如果你的电脑没有保存密码,则会提示你输入开发者帐号和密码,因为我的电脑已经保存了,所以直接进入. 2.点击:Certificates, Identifiers & Profiles 3.点击Devices 一.创建App IDs和Boudle ID 4.点击App ID

java后台接受app上传的图片

package com.sujinabo.file; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.util.List; import java.util.UUID; import javax.servlet.ServletException; import javax.servlet.annotat

ipcloud上传裁切图片,保存为base64再压缩传给后台

<!doctype html> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="maximum-scale=1.0,minimum-scale=1.0,user-scalable=0,width=device-width,initial-scale=1.0"/> <meta name="

各大安卓应用市场APP上传提交与收录

360 提交网址 应用宝 提交网址 百度 提交网址 91 提交网址 安卓 提交网址 PP助手 提交网址 小米 提交网址 华为 提交网址 OPPO 提交网址 魅族 提交网址 乐视 提交网址 豌豆荚 提交网址 安智 提交网址 应用汇 提交网址 锤子 提交网址 联想 提交网址 搜狗 提交网址 优亿 提交网址 N多 提交网址 机锋 提交网址

ios开发 上传到App Store 时出错. iTunes Store Operation Failed, An Error occurred uploading to the iTunes store.

ios开发 上传到App Store 时出错. iTunes Store Operation Failed,    An Error occurred uploading to the iTunes store. 的解决方法,网上找了很多. 如下(当然没有解决我的问题,可以一试): 今天在提交app的时候,最后一步报错, An error occurred uploading to the iTunes Store! 后来上网查了查资料,在这里整理一下: 第一: 有可能是中文编码的问题,需要把编

php如何解析IOS/Android上传的Json消息

使用yii框架php服务器接收IOS/Android上传的Json消息时,$_POST. Yii::app()->request->getPost()结果都将为null. 使用file_get_contents("php://input")才能够正常获取. "php://input"可以访问请求的原始数据,并且带给内存的压力更小. 例子如下: class appController extends Controller { public function

安卓上传本地图片闪退

1.现象 当我们在app上上传一些安卓的本地图片时,有时当上传某些图片时会莫名其妙的闪退,而检查时发现并没有oom异常.同样上传一些类似的图片却可以正常使用. 1.1 开启选择本地图片 Intent intent = new Intent(Intent.ACTION_PICK, null); intent.setDataAndType(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,"image/*"); startActivityForRes