Springboot 上传文件至阿里云OSS
来源:互联网 发布:北京谷歌seo 编辑:程序博客网 时间:2024/06/05 07:15
导入依赖包
在pox.xml中加入
<dependency> <groupId>com.aliyun.oss</groupId> <artifactId>aliyun-sdk-oss</artifactId> <version>2.7.0</version></dependency>
OSS上传工具类
/** * OSS上传工具类 * 2017/10/26 * * @author Cheivin * @version 1.0 */public class AliOSSUtil { private final static Logger logger = Logger.getLogger(AliOSSUtil.class); /** * 管理控制台里面获取EndPoint */ private final static String END_POINT = "oss-cn-shanghai.aliyuncs.com"; /** * 云账号AccessKey有所有API访问权限,建议遵循阿里云安全最佳实践,创建并使用RAM子账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建 */ private final static String ACCESS_KEY_ID = "这里填你的ACCESSKEY"; private final static String ACCESS_KEY_SECRET = "这里填你的ACCESSKEYSECRET"; /** * 上传的BUCKET名称 */ private final static String BUCKET_NAME = "这里填你的BUCKET名称"; /** * 管理控制台里面获取的访问域名 */ private final static String FILE_HOST = "这里填访问域名"; /** * 上传文件到bucket * * @param file 本地文件 * @param dir bucket存放目录(末尾要加/) * @param fileName 上传文件名 * @return 访问地址 */ public static String uploadLocalFile(File file, String dir, String fileName) { if (file == null || !file.exists()) { return null; } // 创建OSSClient实例 OSSClient ossClient = new OSSClient(END_POINT, ACCESS_KEY_ID, ACCESS_KEY_SECRET); try { // 上传文件 PutObjectResult result = ossClient.putObject(new PutObjectRequest(BUCKET_NAME, dir + fileName, file)); if (null != result) { return FILE_HOST + dir + fileName; } else { return null; } } catch (OSSException | ClientException oe) { logger.error("上传OSS失败:", oe); oe.printStackTrace(); return null; } finally { // 关闭OSS服务 ossClient.shutdown(); } } /** * 上传文件到bucket * * @param file 本地文件 * @param dir bucket目录 * @return 访问地址 */ public static String uploadLocalFile(File file, String dir) { if (file == null) { return null; } String filePath = dir + file.getName(); // 创建OSSClient实例 OSSClient ossClient = new OSSClient(END_POINT, ACCESS_KEY_ID, ACCESS_KEY_SECRET); try { // 上传文件 PutObjectResult result = ossClient.putObject(new PutObjectRequest(BUCKET_NAME, filePath, file)); if (null != result) { // 拼装访问地址 return FILE_HOST + filePath; } else { return null; } } catch (OSSException | ClientException oe) { logger.error("OSS上传失败:", oe); oe.printStackTrace(); return null; } finally { // 关闭OSS服务 ossClient.shutdown(); } }}
上传图片
/** * 文件上传controller * 2017/10/26 * * @author Cheivin * @version 1.0 */@RestControllerpublic class UploadController { private static Logger logger = Logger.getLogger(UserController.class); /** * 本地存放目录 */ private static String uoloadPath = ClassUtils.getDefaultClassLoader().getResource("").getPath() + "upload/"; @PostMapping("/upload") public String imageUpload(HttpServletRequest request, @RequestParam("file") MultipartFile file) { if (!file.isEmpty()) { try { // 上传文件信息 logger.info("OriginalFilename:" + file.getOriginalFilename()); logger.info("ContentType:" + file.getContentType()); logger.info("Name:" + file.getName()); logger.info("Size:" + file.getSize()); //TODO:文件大小、名称、类型检查的业务处理 // 检查上传目录 File targetFile = new File(uoloadPath); if (!targetFile.exists()) { targetFile.mkdirs(); } // 实例化输出流 BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(uoloadPath + file.getOriginalFilename())); out.write(file.getBytes()); out.flush(); out.close(); // 上传到OSS String url = AliOSSUtil.uploadLocalFile(new File(uoloadPath + file.getOriginalFilename()), "upload/avatar/"); if (url == null) { //TODO:上传失败的业务处理 return "上传失败"; } logger.info("上传完毕,访问地址:"+url); return "上传成功"; } catch (IOException e) { e.printStackTrace(); logger.error("上传失败", e); return "上传失败"; } } return "上传失败,因为文件是空的."; }}
一些配置的信息,可以放在配置文件中,通过@Value(“配置项名”)方式注入。
阅读全文
0 0
- Springboot 上传文件至阿里云OSS
- springboot上传文件到阿里云OSS
- 阿里云OSS 上传文件
- 阿里云OSS 文件上传
- 阿里oss文件上传
- 阿里云上传文件,下载文件 oss
- 文件上传-阿里云OSS-存储文件
- 文件上传结合springmvc至阿里云的oss
- 整合阿里云OSS文件上传1
- 整合阿里云OSS文件上传2
- OSS阿里云文件上传 demo
- Jfinal版阿里云OSS文件上传
- 阿里云OSS上传文件工具类
- android 阿里云OSS文件上传
- java 上传文件到oss(阿里云)
- 阿里云 oss服务器文件上传 java
- 上传文件到阿里云OSS
- 阿里云OSS通过URL上传文件
- Android开机自启
- 学习他人消灭星星代码的收获
- 1TensorFlow实现自编码器-1.4 TensorFlow实现降噪自动编码器--运行会话,训练模型
- Qt类型转换
- stl map键都是唯一的
- Springboot 上传文件至阿里云OSS
- springcloud服务调用其它服务接口实例及ribbon均衡负载
- Tomcat的账号与密码在哪?
- Linux进程的管理与调度
- React Native Redux TodoList Demo
- svn设置提交忽略某些文件或文件夹
- Firewall常用
- 面试手写代码的题目
- 获取字符串中数字,并计算指定时间的后几个月是几月几号