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服务器的更多相关文章

  1. Java下载https文件上传到阿里云oss服务器

    Java下载https文件上传到阿里云oss服务器 今天做了一个从Https链接中下载音频并且上传到OSS服务器,记录一下希望大家也少走弯路. 一共两个类: 1 .实现自己的证书信任管理器类 /** ...

  2. 上传图片到阿里云OSS和获取上传图片的外网url的步骤

    啥都不说  直接上代码 1.html: <form action="/bcis/api/headImgUpload.json" method="post" ...

  3. TP框架上传图片至阿里云oss

    首先安装阿里云oss扩展: composer require aliyuncs/oss-sdk-php 如果这个安装不上可以直接下载SDK的包: 链接:https://pan.baidu.com/s/ ...

  4. vue中上传图片至阿里云oss

    1.开通阿里云的oss服务这些这里就不多做介绍了 2.登入阿里云的后台管理系统创建一个Bucket 3.在后台管理系统中进入访问控制 4.点击用户管理->新建用户->填写相关信息,就生成了 ...

  5. swift3.0 从相册选取或者拍照上传图片至阿里云OSS

    导入相应的库 import Photos import AliyunOSSiOS 选取照片需要继承 UIImagePickerControllerDelegate,UINavigationContro ...

  6. 上传图片到阿里云oss

    阿里云地址 登录阿里云管理控制台,创建对象存储oss private static final String endpoint = "http://oss-cn-shanghai.aliyu ...

  7. 阿里云OSS服务器的使用

    关于文件上传,我们一般使用OSS服务器.大致为两种上传方式: 详情官网参考:https://help.aliyun.com/document_detail/31927.html?spm=a2c4g.1 ...

  8. swoft 上传图片到 阿里云oss aliyun-oss

    1.swoft  获取上传的文件 .官方文档上面没有看到 $files = $request->getUploadedFiles(); $file = $files['file']; 2.在模型 ...

  9. 构建基于阿里云OSS文件上传服务

    转载请注明来源:http://blog.csdn.net/loongshawn/article/details/50710132 <构建基于阿里云OSS文件上传服务> <构建基于OS ...

随机推荐

  1. python数据库-mongoDB的高级查询操作(55)

    一.MongoDB索引 为什么使用索引? 假设有一本书,你想看第六章第六节讲的是什么,你会怎么做,一般人肯定去看目录,找到这一节对应的页数,然后翻到这一页.这就是目录索引,帮助读者快速找到想要的章节. ...

  2. 通讯(tarjan缩点)(20190716NOIP模拟测试4)

    B. 通讯   题目类型:传统 评测方式:文本比较  内存限制:256 MiB 时间限制:1000 ms 标准输入输出 题目描述 “这一切都是命运石之门的选择.” 试图研制时间机器的机关SERN截获了 ...

  3. py+selenium 直接给日期赋值,控制台调试报错【已解决】

    目标:给带日期控件的输入框赋值. 百度去搜索让你各种去只读readonly属性,再send_keys 方法: 其实既然可以去除readonly属性,那就可以直接给属性赋值,将两行代码缩为一行. dri ...

  4. [记录]Linux下大批量添加用户的方法

    Linux系统提供了创建大量用户的工具,可以让您立即创建大量用户,方法如下: (1)先编辑一个文本用户文件. 每一列按照/etc/passwd密码文件的格式书写,要注意每个用户的用户名.UID.宿主目 ...

  5. NOIP2018&2013提高组T1暨洛谷P5019 铺设道路

    题目链接:https://www.luogu.org/problemnew/show/P5019 花絮:普及蒟蒻终于A了一道提高的题目?emm,写一篇题解纪念一下吧.求过! 分析: 这道题我们可以采用 ...

  6. Oracle:ORA-01219:database not open:queries allowed on fixed tables/views only

    Oracle:ORA-01219:database not open:queries allowed on fixed tables/views only 问: 解决 ORA-01219:databa ...

  7. 关于C#调用WebServices的方法

    2018-1-22 前情是我使用vs在引用高通的webservice时出现了下载错误导致无法引用这个服务,先是在网上查询了这个错误的问题及解决方案,将这个问题与解决方法发给了高通同事,可惜的是他也不清 ...

  8. memset函数怎么用嘞↓↓↓

    1.我也曾天真的以为 memset(a,0,sizeof(a))中的0可以用任意数替换 实际上这是错误的 memset的功能是将一快内存中的内容以单个字节逐个拷贝的方式放到指定的内存中去. 2.介绍几 ...

  9. Redis(五)--- Redis的持久化RDB与AOF

    一.Redis数据库 我们都知道Redis是基于内存的数据库,数据是以key-value键值对的方式存储的,那么key-value键值对是随意放在内存中的么,其实Redis的服务会创建很多的数据库空间 ...

  10. jsp数据交互(二).3

    01.Application原理与应用 01.application对象的作用域范围是整个应用服务,而它在应用中所承担的责任就类似于一个全局变量.只要服务启动,则application对象就会存在. ...