springboot上传文件到阿里云OSS
来源:互联网 发布:海关数据免费查询系统 编辑:程序博客网 时间:2024/05/22 07:09
/** * 方法描述:文件上传 * * @author leon 2017年7月25日 上午10:54:37 * @param request * @param response * @return */ @RequestMapping(value = "/upload", method = { RequestMethod.POST }) @ResponseBody public ResultModel<List<String>> upload(HttpServletRequest request, HttpServletResponse response) { ResultModel<List<String>> resultModel = new ResultModel<List<String>>(); try { // 创建一个通用的多部分解析器 CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver(request.getSession().getServletContext()); List<String> files = new ArrayList<>(); // 判断 request 是否有文件上传,即多部分请求 if (multipartResolver.isMultipart(request)) { // 转换成多部分request MultipartHttpServletRequest multiRequest = (MultipartHttpServletRequest) request; // 取得request中的所有文件名 Iterator<String> iter = multiRequest.getFileNames(); while (iter.hasNext()) { // 取得上传文件 MultipartFile file = multiRequest.getFile(iter.next()); if (file != null) { // 取得当前上传文件的文件名称 String fileName = file.getOriginalFilename(); // 如果名称不为空,说明该文件存在,否则说明该文件不存在 if (fileName.trim() != "") { File newFile = new File(fileName); FileOutputStream outStream = new FileOutputStream(newFile); // 文件输出流用于将数据写入文件 outStream.write(file.getBytes()); outStream.close(); // 关闭文件输出流 file.transferTo(newFile); // 上传到阿里云 files.add(AliOSSUtil.upload(newFile)); newFile.delete(); } } } } resultModel.setReturnValue(files); } catch (ValidateException e) { resultModel.setSuccessed(false); resultModel.setErrorCode(e.getMessage()); } catch (Exception e) { resultModel.setSuccessed(false); resultModel.setErrorCode("system error"); log.error(e.getMessage()); e.printStackTrace(); } return resultModel; }
public class AliOSSUtil { private final static Logger log = Logger.getLogger(AliOSSUtil.class); private static String END_POINT = "oss-cn-shanghai.aliyuncs.com"; private static String ACCESS_KEY_ID = "xxx"; private static String ACCESS_KEY_SECRET = "xxx"; private static String BUCKET_NAME = "xxx-image"; // 文件访问域名 private static String FILE_HOST = "https://file.xxx.com/"; /** * 方法描述:上传文件 * * @author leon 2016年12月16日 上午11:40:34 * @param file 文件对象 * @return */ public static String upload(File file) { if (file == null) { return null; } // 创建OSS客户端 OSSClient ossClient = new OSSClient(END_POINT, ACCESS_KEY_ID, ACCESS_KEY_SECRET); try { // 判断文件容器是否存在,不存在则创建 if (!ossClient.doesBucketExist(BUCKET_NAME)) { ossClient.createBucket(BUCKET_NAME); CreateBucketRequest createBucketRequest = new CreateBucketRequest(BUCKET_NAME); createBucketRequest.setCannedACL(CannedAccessControlList.PublicRead); ossClient.createBucket(createBucketRequest); } // 创建文件路径 String fileUrl = DateUtil.dateTo8String2(new Date()) + "/" + UuidUtil.getUuidByJdk(false); // 上传文件 PutObjectResult result = ossClient.putObject(new PutObjectRequest(BUCKET_NAME, fileUrl, file)); if (null != result) { return FILE_HOST + fileUrl; } } catch (OSSException oe) { log.error(oe.getMessage()); } catch (ClientException ce) { log.error(ce.getMessage()); } finally { // 关闭OSS服务,一定要关闭 ossClient.shutdown(); } return null; } /** * 方法描述:上传文件 * * @author leon 2016年12月26日 下午3:33:13 * @param inputStream 文件流 * @return * @throws FileNotFoundException */ public static String upload(InputStream inputStream) throws FileNotFoundException { if (inputStream == null) { return null; } // 创建OSS客户端 OSSClient ossClient = new OSSClient(END_POINT, ACCESS_KEY_ID, ACCESS_KEY_SECRET); try { // 判断文件容器是否存在,不存在则创建 if (!ossClient.doesBucketExist(BUCKET_NAME)) { ossClient.createBucket(BUCKET_NAME); CreateBucketRequest createBucketRequest = new CreateBucketRequest(BUCKET_NAME); createBucketRequest.setCannedACL(CannedAccessControlList.PublicRead); ossClient.createBucket(createBucketRequest); } // 创建文件路径 String fileUrl = DateUtil.dateTo8String2(new Date()) + "/" + UuidUtil.getUuidByJdk(false); // 上传文件 PutObjectResult result = ossClient.putObject(new PutObjectRequest(BUCKET_NAME, fileUrl, inputStream)); if (null != result) { return FILE_HOST + fileUrl; } } catch (OSSException oe) { log.error(oe.getMessage()); } catch (ClientException ce) { log.error(ce.getMessage()); } finally { // 关闭OSS服务,一定要关闭 ossClient.shutdown(); } return null; }}
maven依赖的jar包
<!-- https://mvnrepository.com/artifact/com.aliyun.oss/aliyun-sdk-oss --><dependency><groupId>com.aliyun.oss</groupId><artifactId>aliyun-sdk-oss</artifactId><version>2.4.0</version></dependency><dependency><groupId>commons-fileupload</groupId><artifactId>commons-fileupload</artifactId><version>1.3.1</version></dependency>
阅读全文
0 0
- springboot上传文件到阿里云OSS
- Springboot 上传文件至阿里云OSS
- java 上传文件到oss(阿里云)
- 上传文件到阿里云OSS
- 阿里云OSS 上传文件
- 阿里云OSS 文件上传
- ThinkPHP 文件上传到阿里云OSS上
- 阿里oss文件上传
- 阿里云上传文件,下载文件 oss
- 文件上传-阿里云OSS-存储文件
- 整合阿里云OSS文件上传1
- 整合阿里云OSS文件上传2
- OSS阿里云文件上传 demo
- Jfinal版阿里云OSS文件上传
- 阿里云OSS上传文件工具类
- android 阿里云OSS文件上传
- 阿里云 oss服务器文件上传 java
- 阿里云OSS通过URL上传文件
- Windows 平台 Redmine 一键部署与邮箱配置
- session可以存储的方式有几种,如果程序采取分布式,怎么样实现session共享
- Handlebars.js if 功能扩展
- 3177
- Java基础之封装
- springboot上传文件到阿里云OSS
- JeeSite框架学习------主子表创建总结
- 【二分图最大匹配】BZOJ4554 [Tjoi2016&Heoi2016]游戏
- Java中Runnable和Thread的区别
- Android中向ContactsProvider中插入大量联系人(编辑中)
- C++表达式的执行原理
- JS(去掉前后空格或去掉所有空格)的用法
- 7.26 机房欢乐赛 T1 无尽的矩阵 (hash + KMP)
- 视频直播的一些概念性的东西 码率 sdn 等