16 7 2020 **阿里云对象存储服务(Object Storage Service,简称 OSS)提供基于网络的数据存取服务。使用 OSS,可以通过网络随时存储和调用包括文本、图片、音频和视频等在内的各种非结构化数据文件。具有:** 易用性:简单易用,便于管理,深度集成数据处理服务; 高可靠:多重冗余备份,服务设计可用性不低于99.99%; 强安全:多层次安全防护,支持跨区域复制、异地容灾机制; 低成本:总体TCO更低,生命周期管理进一步降低成本等特点。 **在实现之前首先要购买阿里云对象存储OSS资源包并创建了Bucket。这里不详细介绍,只介绍实现的代码。** ##### 前端实现比较简单,可以采用插件,有layui,bootstrap-fileinput等优秀插件,这里使用layui。 前端实现比较简单,可以采用插件,有layui,bootstrap-fileinput等优秀插件,这里使用[layui](https://www.layui.com/ "layui")。 #### 前端代码: ``` upload 上传图片 ``` #### 效果: ![](https://yuqingblog-upload.oss-cn-shanghai.aliyuncs.com/upload20200730164606480) #### 后端接口: ``` @RequestMapping(value="/upload") @ResponseBody public JsonResult upload(MultipartFile file, HttpServletRequest request) { if (!file.isEmpty()) { try { SimpleDateFormat format = new SimpleDateFormat("yyyyMMddHHmmss"); // 生成文件名称 String nameSuffix = file.getOriginalFilename().substring(0, file.getOriginalFilename().lastIndexOf(".")) .replaceAll(" ", "_").replaceAll(",", "") + format.format(DateUtil.date()) + new Random().nextInt(1000); //上传原始图片到阿里云 String uploadPath = ossFileUtil.uploadAliyun(file,nameSuffix); return new JsonResult(true, "上传成功",uploadPath); } catch (Exception e) { log.error("上传附件错误" + e.getMessage()); return new JsonResult(false, "系统未知错误"); } } else { return new JsonResult(false, "文件不能为空"); } } ``` #### JsonResult工具类: ``` public class JsonResult { private boolean flag; private String msg; private Object data; public JsonResult() { super(); } public JsonResult(boolean flag, String msg) { super(); this.flag = flag; this.msg = msg; } public JsonResult(boolean flag, String msg, Object data) { super(); this.flag = flag; this.msg = msg; this.data = data; } public boolean isFlag() { return flag; } public void setFlag(boolean flag) { this.flag = flag; } public String getMsg() { return msg; } public void setMsg(String msg) { this.msg = msg; } public Object getData() { return data; } public void setData(Object data) { this.data = data; } } ``` ### 上传图片到阿里云工具类: #### 阿里云oss坐标: ``` com.aliyun.oss aliyun-sdk-oss 3.10.2 ``` #### 上传oss工具类: ``` public class ossFileUtil { public String uploadAliyun(MultipartFile file,String fileName) throws IOException { // 1 获取上传需要的固定值 String endpoint ="oss-cn-shanghai.aliyuncs.com"; //你的站点 String accessKeyId = ""; //你的acess_key_id String accessKeySecret = ""; //你的acess_key_secret String bucketName = ""; //你的bucket_name //外面获取文件输入流,最后方便关闭 InputStream in = file.getInputStream(); try { //2 创建OssClient对象 OSS ossClient =new OSSClientBuilder().build(endpoint,accessKeyId,accessKeySecret); //3 获取文件信息,为了上传 // meta设置请求头 ObjectMetadata meta = new ObjectMetadata(); meta.setContentType("image/jpg"); //4 设置知道文件夹 ossClient.putObject(bucketName,fileName,in, meta); //5 关闭ossClient ossClient.shutdown(); //6 返回上传之后地址,拼接地址 String uploadUrl = "https://"+bucketName+"."+endpoint+"/"+fileName; return uploadUrl; }catch(Exception e) { e.printStackTrace(); return null; }finally { in.close(); } } } ``` 非特殊说明,本文版权归 余情 所有,转载请注明出处. 本文标题: Java实现简单上传图片到阿里云对象存储OSS 本文网址: http://www.yuqingbolg.cn/read/162 延伸阅读 SpringBoot之HandlerInterceptor拦截器的使用 [2020-07-22 11:40:35] echarts如何实现关键词云图 [2020-07-18 18:22:57] Error:java: OutOfMemoryError: insufficient memory [2021-04-16 10:49:08] 单点登录原理 [2020-12-30 17:21:20] MySQL 优化问题 [2020-11-19 14:22:15] 发表评论 提交评论