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.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile; import com.alibaba.fastjson.JSONObject;
import com.voyage.client.util.ApiResponse;
import com.voyage.client.util.OSSUtil;
import com.voyage.client.util.StringUtil; @RestController
@RequestMapping("/resource")
public class BasicController { /*
* 图片上传
*/
@PostMapping("/imgUpload")
public ApiResponse imgUpload(HttpServletRequest request, @RequestParam("file") MultipartFile file) { String url = "";
if (file != null) { String fileName = file.getOriginalFilename();//获取上传原图片名称
String newFileName = StringUtil.guid() + fileName.substring(fileName.lastIndexOf("."));//生成保存在服务器的图片名称,延用原后缀名
try {
OSSUtil.upload(newFileName, file.getInputStream());
url = newFileName;
} catch (IOException e) { e.printStackTrace();
}
}
JSONObject r = new JSONObject();
r.put("url", OSSUtil.getUrl(url, ""));
//r.put("snapshotUrl", OSSUtil.getUrl(url, "?x-oss-process=image/resize,m_fixed,h_200,w_200"));
return new ApiResponse(r); } }
2.oss图片上传工具类
import com.aliyun.oss.OSSClient;
import com.aliyun.oss.model.ObjectMetadata;
import com.aliyun.oss.model.PutObjectResult; import java.io.IOException;
import java.io.InputStream;
import java.net.URL; public class OSSUtil { private static String endpoint = "oss-cn-shenzhen.aliyuncs.com"; private static String accessKeyId = "LT*******3"; private static String accessKeySecret = "U**************Y4A"; private static String bucketName = "bucketName"; private static OSSClient ossClientStatic; static {
ossClientStatic = new OSSClient(endpoint, accessKeyId, accessKeySecret);
} /**
* 上传到OSS服务器 如果同名文件会覆盖服务器上的
*
* @param fileName 文件名称 包括后缀名
* @param instream 文件流
* @return 出错返回"" ,唯一MD5数字签名
*/
public static String upload(String fileName, InputStream instream) {
String resultStr = "";
try { // 创建上传Object的Metadata
ObjectMetadata objectMetadata = new ObjectMetadata();
// objectMetadata.setContentLength(instream.available());
// objectMetadata.setCacheControl("no-cache");
// objectMetadata.setHeader("Pragma", "no-cache");
// objectMetadata.setContentType(getContentType(fileName.substring(fileName.lastIndexOf("."))));
// objectMetadata.setContentDisposition("inline;filename=" + fileName); // 上传文件 (上传文件流的形式)
PutObjectResult putResult = ossClientStatic.putObject(bucketName, fileName, instream, objectMetadata);
// 解析结果
resultStr = putResult.getETag();
} catch (Exception e) {
e.printStackTrace(); } finally {
try {
if (instream != null) {
instream.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
return resultStr; } /**
* 上传图片
*
* @param url
*/
public static void uploadUrl(String fileName, String url) { try {
InputStream instream = new URL(url).openStream();
upload(fileName, instream);
} catch (Exception e) {
e.printStackTrace(); } finally { }
} /**
* 获得url链接
*
* @param key
* @return
*/
public static String getUrl(String key, String option) {
if (StringUtil.isBlank(key))
return "";
return "http://" + bucketName + "." + endpoint + "/" + key + option; } public static String getBaseUrl() { return "http://" + bucketName + "." + endpoint + "/";
}
}
3.maven需要引入的阿里云oss服务器jar包
<dependency>
<groupId>com.aliyun.oss</groupId>
<artifactId>aliyun-sdk-oss</artifactId>
<version>2.4.0</version>
</dependency>
Java中使用RestFul接口上传图片到阿里云OSS服务器的更多相关文章
- Java下载https文件上传到阿里云oss服务器
Java下载https文件上传到阿里云oss服务器 今天做了一个从Https链接中下载音频并且上传到OSS服务器,记录一下希望大家也少走弯路. 一共两个类: 1 .实现自己的证书信任管理器类 /** ...
- 上传图片到阿里云OSS和获取上传图片的外网url的步骤
啥都不说 直接上代码 1.html: <form action="/bcis/api/headImgUpload.json" method="post" ...
- TP框架上传图片至阿里云oss
首先安装阿里云oss扩展: composer require aliyuncs/oss-sdk-php 如果这个安装不上可以直接下载SDK的包: 链接:https://pan.baidu.com/s/ ...
- vue中上传图片至阿里云oss
1.开通阿里云的oss服务这些这里就不多做介绍了 2.登入阿里云的后台管理系统创建一个Bucket 3.在后台管理系统中进入访问控制 4.点击用户管理->新建用户->填写相关信息,就生成了 ...
- swift3.0 从相册选取或者拍照上传图片至阿里云OSS
导入相应的库 import Photos import AliyunOSSiOS 选取照片需要继承 UIImagePickerControllerDelegate,UINavigationContro ...
- 上传图片到阿里云oss
阿里云地址 登录阿里云管理控制台,创建对象存储oss private static final String endpoint = "http://oss-cn-shanghai.aliyu ...
- 阿里云OSS服务器的使用
关于文件上传,我们一般使用OSS服务器.大致为两种上传方式: 详情官网参考:https://help.aliyun.com/document_detail/31927.html?spm=a2c4g.1 ...
- swoft 上传图片到 阿里云oss aliyun-oss
1.swoft 获取上传的文件 .官方文档上面没有看到 $files = $request->getUploadedFiles(); $file = $files['file']; 2.在模型 ...
- 构建基于阿里云OSS文件上传服务
转载请注明来源:http://blog.csdn.net/loongshawn/article/details/50710132 <构建基于阿里云OSS文件上传服务> <构建基于OS ...
随机推荐
- json字符串转换成java对象
- python笔记(2)--字符串
一.字符串 字符串是不可变序列,具有序列的公共操作方法,具体操作见python笔记(1)--序列(列表 元组 range) 1.创建字符串 单引号:'Hello , I am Logan ! ' 双引 ...
- 乘法口诀表(C语言实现)
输出乘法口诀表,关键在于利用好循环语句,而且是二层循环.
- 【拓扑排序】排队-C++
描述 今天,学校老师让同学们排成一队,准备带大家出去玩,一共有 n 名同学,排队的时候同学们向老师提了 m 条要求,每一条要求是说同学 x 一定要排在同学 y 之前,老师现在想找到一种排队方式可以满足 ...
- [原创]wireshark&xterm安装、配置和使用
--wireshark && xterm--一.安装wireshark: #apt-get install wireshark二.启动wireshark: #wireshark 或者 ...
- 比赛:小奔的矩形solution
分析: 交叉相乘,然后除以最大公因数(为了减少爆常数的可能性std做了两次,数据很大),得到的两个数相加减二就是答案 代码: var p,q,n,m,a,b,i:int64; begin readln ...
- Excel催化剂开源第16波-VSTO开发之脱离传统COM交互以提升性能
在VSTO开发或其他COM技术开发过程中,甚至VBA也是,在和Excel交互中,难免会遇到性能瓶颈问题,COM技术的交互实在太慢,对大量数据读写等操作,耗时太长,容易卡用户界面以为是程序死机等等. 在 ...
- Android 隐藏软键盘功能的实现
Activity context = (Activity) mContext; final View v = context.getWindow().peekDecorView(); if (v != ...
- jenkins默认在build结束后会kill掉所有的衍生进程
在使用jenkins进行自动化部署服务的过程中,发现调用服务器的shell命令无法正常启动tomcat,但是构建日志显示是成功执行的,而手动在服务器却是可以正常启动tomcat. 原因:jenkins ...
- 数据库---T-SQL语句(一)
一.T-SQL语句 1.创建表:create table Name(Code varchar(50),) 主键:primary key 自增长:auto_increment 外键关系:referenc ...