java 通过阿里云上传图片

一、控制层传参:Images(要上传的图片)

@Autowired
private ImageUploadServiceImpl imageUploadService;

public Object imagesAdd(@RequestParam(value = "Images", required = false) MultipartFile[] Images) {

if (Images != null && Images.length > 0) {
String images = "[";
if (Images != null && Images.length > 0) {
for (int i = 0; i < Images.length; i++) {
String imageUrl = imageUploadService.uploadFile(Images[i]);
if (i == 0) {
images += imageUrl;
continue;
 } else {
images += "," + imageUrl;
 }
 }
 }
images += "]";

}

return images;

2、服务层,上传图片

@Service
public class ImageUploadServiceImpl implements ImageUploadService {

// endpoint以杭州为例,其它region请按实际情况填写
static String endpoint = "*******";
// 云账号AccessKey有所有API访问权限,建议遵循阿里云安全最佳实践,创建并使用RAM子账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建
static String accessKeyId = "*******";
static String accessKeySecret = "*******";
static String bucketname = "*******";
private volatile static OSSClient ossClient;
// @Autowired
// ExceptionLogService exceptionLogService;
@Autowired
StorageServiceImpl storageObjectService;
@Autowired
MemberServiceImpl memberService;

public ImageUploadServiceImpl() {
if (ossClient == null) {
synchronized (this) {
if (ossClient == null) {
ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);
}
}
}
}

@Override
public String uploadFile(MultipartFile imgFile) {
String avatarUrl = null;

try {
// 生成一个MD5加密计算摘要
MessageDigest md = MessageDigest.getInstance("MD5");
// 计算md5函数
md.update(imgFile.getBytes());
String md5 = new BigInteger(1, md.digest()).toString(16);
StorageObject storageObject = storageObjectService.findByMd5code(md5);
if (storageObject == null) {
ObjectMetadata meta = new ObjectMetadata();
meta.setContentLength(imgFile.getSize());
String guessContentType = imgFile.getContentType();
meta.setContentType(guessContentType);
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
String data = sdf.format(new Date());
String uuid = UUID.randomUUID().toString().replaceAll("-", "");
//获得文件后缀名称
String imageName = guessContentType.substring(guessContentType.indexOf("/") + 1);
String fileId = data + "/" + uuid + "." + imageName;
PutObjectRequest putObjectRequest = new PutObjectRequest(bucketname, fileId, imgFile.getInputStream());//上传文件
putObjectRequest.setMetadata(meta);
ossClient.putObject(putObjectRequest);//上传图片
storageObject = new StorageObject();
storageObject.setCreateTime(new Date());
storageObject.setMd5(md5);
StringBuffer url = new StringBuffer("http://");
url.append(bucketname).append(".").append(endpoint).append("/").append(fileId);
storageObject.setUrl(url.toString());
storageObjectService.save(storageObject);
}
avatarUrl = storageObject.getUrl().toString();
} catch (IOException e) {
throw new ServiceException("上传头像出错");
} catch (NoSuchAlgorithmException e) {
throw new ServiceException("上传头像出错");
}
return avatarUrl;
}
}

原文地址:https://www.cnblogs.com/qqzhulu/p/10582659.html

时间: 2024-10-05 19:52:44

java 通过阿里云上传图片的相关文章

JAVA+PHP+阿里云组件纯手工实现POP、SMTP、IMAP开发邮件服务器(二)

java开发邮件服务器的接收模块 用java建立socket服务端,监听端口25,实现SMTP协议.即可完成邮件服务器的接收模块. 这里要注意的是,SMTP协议其实可以分为两种.一种是你用手机.PC等客户端发邮件到邮件服务商的服务器的时候用的SMTP协议,这一类是需要登录验证的.一种是邮件服务商之间传递邮件的SMTP协议,此类协议是不需要登录的.比如你用Foxmail上你的QQ邮箱发送了一封邮件到163的邮箱.过程是这样的: 邮件从Foxmail通过SMTP协议发送到QQ邮箱的服务器. QQ邮箱

阿里云上传图片

//应用于EasyUI框架 js://图片上传 loadPic:function(index){ $('#hrAddTabs').datagrid('selectRow',index); var row = $("#hrAddTabs").datagrid("getSelected"); var code = $("#xlUserCode1").val(); $.ajaxFileUpload({ url:"data/uploadPics

使用java实现阿里云消息队列简单封装

一.前言 最近公司有使用阿里云消息队列的需求,为了更加方便使用,本人用了几天时间将消息队列封装成api调用方式以方便内部系统的调用,现在已经完成,特此记录其中过程和使用到的相关技术,与君共勉. 现在阿里云提供了两种消息服务:mns服务和ons服务,其中我认为mns是简化版的ons,而且mns的消息消费需要自定义轮询策略的,相比之下,ons的发布与订阅模式功能更加强大(比如相对于mns,ons提供了消息追踪.日志.监控等功能),其api使用起来更加方便,而且听闻阿里内部以后不再对mns进行新的开发

Java 使用阿里云短信的API接口

亲们上午好,写的不好的地方还望指正.谢谢各位! 引言 短信服务(Short Message Service)是阿里云为用户提供的一种通信服务的能力,支持快速发送短信验证码.短信通知等.(我这里只讲一个最基本的短信的发送验证码的功能) 1.第一步咱们先把环境准备好   1.1首先必须在阿里云注册一个账号,或者使用自己的淘宝账号支付宝账号 都是一样的  然后进行实名认证   1.2咱们进入控制台(在以上步骤的准备好的情况下) 然后点击左上角的产品 进来之后会叫你开通  点击开通即可  我的开通了 就

零基础大数据入门教程:Java调用阿里云短信通道服务

这里我们使用SpringBoot 来调用阿里通信的服务. 阿里通信,双11.收到短信,日发送达6亿条.保障力度非常高. 使用的步骤: 1.1. 第一步:需要开通账户 1.2. 第二步:阅读接口文档 1.2.1. 秘钥管理 1.2.2. 短信签名 1.2.3. 短信模板 1.3. SDK 这个由阿里云提供. 编译与打包. 打包到本地仓库,或者公司局域网内的私服地址. Maven打包 1.4. 第三步:创建SpringBoot工程,导入依赖 <!-- sms单独打包 --> <depende

【UEditor】 UEditor整合项目上传资源到阿里云服务器

目录 关于此文 下载源码 JSP代码 Java代码 阿里云jar包引入配置 成功啦! 回到顶部 关于此文 项目中要实现编辑器生成带格式的html文档,存入模板,最后生成html的URL,所以选择了UEditor. UEditor是由百度WEB前端研发部开发的所见即所得的开源富文本编辑器,具有轻量.可定制.用户体验优秀等特点. 之前没有接触过编辑器,从头开始摸索.看API,看网上的例子.之前,用的是UMeditor,是UEditor的mini版本.用的人少,例子也少.让我很苦恼.之后又换回了完整版

新手玩阿里云ECS搭建CentOS5.8搭建svn服务器支持https访问方式

关于svn,之前我也不了解这是个什么东西,去年(大二)的时候,在学校接触过一个项目,当时就用到了这个,也都不是我配置的,都是别人给我整好了,我就写代码呗,写了就提交上去,当时也没有考虑过什么事svn,现在在公司实习了,时间很充裕,就想玩玩svn,也顺便把我准备做的毕业设计都传上去,阿里云给了我机会,新手注册,ECS免费半年,多好的事,虽然没有外网带宽,但是买1M的外网带宽也就20多块钱一个月吧!我还是可以接受的,好了不废话了,阿里云在这里就不废话了,反正感觉很高大上,在这里就简单聊聊svn吧!也

阿里云常见问题分析与解答

1.网站纯静态页面和伪静态页面有何区别 纯静态,就是服务器上有个html文件,不需要任何处理,直接返回客户端伪静态,从客户端上看,好像在请求一个文件,但是其实是服务器动态生成的虽然看网址看不出来,但是明显一些内容是必须动态合成才能产生的就不可能是真的静态文件 2.php java 哪个更合适网站开发? 都适合,相比来说,java更适合企业开发:针对场景和应用的不同,选择语言也不同 如果是一般的中小企业网络应用,建议php开发(快就一个字)中小网站追求速度,可采用php 如果是大型应用,推荐jav

Java中使用RestFul接口上传图片到阿里云OSS服务器

1.接口方法 import java.io.IOException; import javax.servlet.http.HttpServletRequest; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation