package com.tuanzi.service;
import com.tuanzi.config.AliyunConfig;
import com.tuanzi.vo.FileUploadResult;
import com.aliyun.oss.OSS;
import com.aliyun.oss.model.*;
import org.apache.commons.lang3.RandomUtils;
import org.apache.commons.lang3.StringUtils;
import org.joda.time.DateTime;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
import java.io.*;
import java.util.List;
/**
* @author 团子
* @desc
* @date 2019-07-31 11:31
*/
@Service
public class FileUploadService {
// 允许上传的格式
private static final String[] IMAGE_TYPE = new String[]{".bmp", ".jpg",
".jpeg", ".gif", ".png"};
@Autowired
private OSS ossClient;
@Autowired
private AliyunConfig aliyunConfig;
/**
* @author 团子
* @desc 文件上传
* 文档链接 https://help.aliyun.com/document_detail/84781.html?spm=a2c4g.11186623.6.749.11987a7dRYVSzn
* @date 2019-07-31 11:31
*/
public FileUploadResult upload(MultipartFile uploadFile) {
// 校验图片格式
boolean isLegal = false;
for (String type : IMAGE_TYPE) {
if (StringUtils.endsWithIgnoreCase(uploadFile.getOriginalFilename(),
type)) {
isLegal = true;
break;
}
}
//封装Result对象,并且将文件的byte数组放置到result对象中
FileUploadResult fileUploadResult = new FileUploadResult();
if (!isLegal) {
fileUploadResult.setStatus("error");
return fileUploadResult;
}
//文件新路径
String fileName = uploadFile.getOriginalFilename();
String filePath = getFilePath(fileName);
// 上传到阿里云
try {
ossClient.putObject(aliyunConfig.getBucketName(), filePath, new
ByteArrayInputStream(uploadFile.getBytes()));
} catch (Exception e) {
e.printStackTrace();
//上传失败
fileUploadResult.setStatus("error");
return fileUploadResult;
}
fileUploadResult.setStatus("done");
fileUploadResult.setResponse("success");
//this.aliyunConfig.getUrlPrefix() + filePath 文件路径需要保存到数据库
fileUploadResult.setName(this.aliyunConfig.getUrlPrefix() + filePath);
fileUploadResult.setUid(String.valueOf(System.currentTimeMillis()));
return fileUploadResult;
}
/**
* @author 团子
* @desc 生成路径以及文件名 例如://images/2019/04/28/15564277465972939.jpg
* @date 2019-07-31 11:31
*/
private String getFilePath(String sourceFileName) {
DateTime dateTime = new DateTime();
return "images/" + dateTime.toString("yyyy")
+ "/" + dateTime.toString("MM") + "/"
+ dateTime.toString("dd") + "/" + System.currentTimeMillis() +
RandomUtils.nextInt(100, 9999) + "." +
StringUtils.substringAfterLast(sourceFileName, ".");
}
/**
* @author 团子
* @desc 查看文件列表
* 文档链接 https://help.aliyun.com/document_detail/84841.html?spm=a2c4g.11186623.2.13.3ad5b5ddqxWWRu#concept-84841-zh
* @date 2019-07-31 11:31
*/
public List<OSSObjectSummary> list() {
// 设置最大个数。
final int maxKeys = 200;
// 列举文件。
ObjectListing objectListing = ossClient.listObjects(new ListObjectsRequest(aliyunConfig.getBucketName()).withMaxKeys(maxKeys));
List<OSSObjectSummary> sums = objectListing.getObjectSummaries();
return sums;
}
/**
* @author 团子
* @desc 删除文件
* 文档链接 https://help.aliyun.com/document_detail/84842.html?spm=a2c4g.11186623.6.770.4f9474b4UYlCtr
* @date 2019-07-31 11:31
*/
public FileUploadResult delete(String objectName) {
// 根据BucketName,objectName删除文件
ossClient.deleteObject(aliyunConfig.getBucketName(), objectName);
FileUploadResult fileUploadResult = new FileUploadResult();
fileUploadResult.setName(objectName);
fileUploadResult.setStatus("removed");
fileUploadResult.setResponse("success");
return fileUploadResult;
}
/**
* @author 团子
* @desc 下载文件
* 文档链接 https://help.aliyun.com/document_detail/84823.html?spm=a2c4g.11186623.2.7.37836e84ZIuZaC#concept-84823-zh
* @date 2019-07-31 11:31
*/
public void exportOssFile(OutputStream os, String objectName) throws IOException {
// ossObject包含文件所在的存储空间名称、文件名称、文件元信息以及一个输入流。
OSSObject ossObject = ossClient.getObject(aliyunConfig.getBucketName(), objectName);
// 读取文件内容。
BufferedInputStream in = new BufferedInputStream(ossObject.getObjectContent());
BufferedOutputStream out = new BufferedOutputStream(os);
byte[] buffer = new byte[1024];
int lenght = 0;
while ((lenght = in.read(buffer)) != -1) {
out.write(buffer, 0, lenght);
}
if (out != null) {
out.flush();
out.close();
}
if (in != null) {
in.close();
}
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
springboot整合oss实现文件的上传,查看,删除,下载
共98个文件
xml:70个
java:7个
class:6个
需积分: 50 98 下载量 64 浏览量
2019-08-10
21:07:30
上传
评论 2
收藏 123KB ZIP 举报
温馨提示
springboot整合oss实现文件的上传,查看,删除,下载!注释清晰,方便易懂!
资源推荐
资源详情
资源评论
收起资源包目录
springboot-oss.zip (98个子文件)
springboot-oss
mvnw.cmd 6KB
mvnw 9KB
src
test
java
cn
lastwhisper
com
tuanzi
OssdemoApplicationTests.java 337B
main
resources
application.properties 191B
static
manager.html 2KB
upload.html 2KB
java
com
tuanzi
service
FileUploadService.java 5KB
controller
FileUploadController.java 2KB
config
AliyunConfig.java 853B
vo
FileUploadResult.java 437B
OssdemoApplication.java 317B
target
generated-test-sources
test-annotations
generated-sources
annotations
classes
application.properties 318B
com
tuanzi
service
FileUploadService.class 5KB
controller
FileUploadController.class 3KB
config
AliyunConfig.class 4KB
OssdemoApplication.class 730B
vo
FileUploadResult.class 3KB
META-INF
springbootoss.kotlin_module 16B
static
manager.html 2KB
upload.html 2KB
test-classes
com
tuanzi
OssdemoApplicationTests.class 619B
META-INF
springbootoss.kotlin_module 16B
.idea
libraries
Maven__net_bytebuddy_byte_buddy_1_9_12.xml 578B
Maven__com_fasterxml_classmate_1_4_0.xml 564B
Maven__ch_qos_logback_logback_core_1_2_3.xml 589B
Maven__junit_junit_4_12.xml 497B
Maven__org_springframework_spring_jcl_5_1_6_RELEASE.xml 651B
Maven__org_springframework_boot_spring_boot_starter_logging_2_1_4_RELEASE.xml 790B
Maven__org_springframework_boot_spring_boot_starter_web_2_1_4_RELEASE.xml 762B
Maven__com_jayway_jsonpath_json_path_2_4_0.xml 588B
Maven__javax_annotation_javax_annotation_api_1_3_2.xml 653B
Maven__ch_qos_logback_logback_classic_1_2_3.xml 610B
Maven__org_apache_logging_log4j_log4j_api_2_11_2.xml 615B
Maven__org_springframework_boot_spring_boot_starter_tomcat_2_1_4_RELEASE.xml 783B
Maven__org_springframework_boot_spring_boot_autoconfigure_2_1_4_RELEASE.xml 776B
Maven__org_springframework_spring_web_5_1_6_RELEASE.xml 651B
Maven__org_apache_tomcat_embed_tomcat_embed_core_9_0_17.xml 667B
Maven__org_springframework_spring_test_5_1_6_RELEASE.xml 658B
Maven__org_springframework_spring_core_5_1_6_RELEASE.xml 658B
Maven__org_springframework_boot_spring_boot_starter_json_2_1_4_RELEASE.xml 769B
Maven__org_springframework_boot_spring_boot_starter_2_1_4_RELEASE.xml 734B
Maven__org_springframework_spring_aop_5_1_6_RELEASE.xml 651B
Maven__org_springframework_boot_spring_boot_starter_test_2_1_4_RELEASE.xml 769B
Maven__org_apache_commons_commons_lang3_3_8_1.xml 612B
Maven__com_fasterxml_jackson_core_jackson_databind_2_9_8.xml 665B
Maven__org_apache_httpcomponents_httpcore_4_4_11.xml 612B
Maven__org_apache_tomcat_embed_tomcat_embed_el_9_0_17.xml 653B
Maven__org_apache_logging_log4j_log4j_to_slf4j_2_11_2.xml 650B
Maven__com_fasterxml_jackson_module_jackson_module_parameter_names_2_9_8.xml 771B
Maven__org_xmlunit_xmlunit_core_2_6_2.xml 577B
Maven__com_vaadin_external_google_android_json_0_0_20131108_vaadin1.xml 742B
Maven__org_hamcrest_hamcrest_core_1_3.xml 574B
Maven__net_minidev_accessors_smart_1_2.xml 584B
Maven__org_ow2_asm_asm_5_0_4.xml 514B
Maven__org_springframework_spring_context_5_1_6_RELEASE.xml 679B
Maven__com_fasterxml_jackson_core_jackson_annotations_2_9_0.xml 686B
Maven__org_apache_httpcomponents_httpclient_4_5_8.xml 619B
Maven__org_springframework_boot_spring_boot_2_1_4_RELEASE.xml 678B
Maven__org_hamcrest_hamcrest_library_1_3.xml 595B
Maven__com_fasterxml_jackson_datatype_jackson_datatype_jsr310_2_9_8.xml 730B
Maven__commons_codec_commons_codec_1_11.xml 585B
Maven__org_springframework_boot_spring_boot_devtools_2_1_4_RELEASE.xml 741B
Maven__org_mockito_mockito_core_2_23_4.xml 584B
Maven__org_slf4j_slf4j_api_1_7_26.xml 555B
Maven__org_springframework_spring_webmvc_5_1_6_RELEASE.xml 672B
Maven__org_springframework_boot_spring_boot_test_2_1_4_RELEASE.xml 713B
Maven__joda_time_joda_time_2_9_9.xml 548B
Maven__org_jdom_jdom_1_1.xml 495B
Maven__org_springframework_spring_beans_5_1_6_RELEASE.xml 665B
Maven__org_apache_tomcat_embed_tomcat_embed_websocket_9_0_17.xml 702B
Maven__com_aliyun_oss_aliyun_sdk_oss_2_8_3.xml 603B
Maven__org_jboss_logging_jboss_logging_3_3_2_Final.xml 650B
Maven__org_objenesis_objenesis_2_6.xml 550B
Maven__org_skyscreamer_jsonassert_1_5_0.xml 579B
Maven__org_projectlombok_lombok_1_18_4.xml 566B
Maven__org_springframework_boot_spring_boot_test_autoconfigure_2_1_4_RELEASE.xml 811B
Maven__com_fasterxml_jackson_core_jackson_core_2_9_8.xml 637B
Maven__org_hibernate_validator_hibernate_validator_6_0_16_Final.xml 723B
Maven__javax_validation_validation_api_2_0_1_Final.xml 653B
Maven__com_fasterxml_jackson_datatype_jackson_datatype_jdk8_2_9_8.xml 716B
Maven__org_assertj_assertj_core_3_11_1.xml 584B
Maven__net_minidev_json_smart_2_3.xml 549B
Maven__org_yaml_snakeyaml_1_23.xml 537B
Maven__org_springframework_spring_expression_5_1_6_RELEASE.xml 700B
Maven__net_bytebuddy_byte_buddy_agent_1_9_12.xml 620B
Maven__org_slf4j_jul_to_slf4j_1_7_26.xml 576B
misc.xml 443B
compiler.xml 810B
workspace.xml 23KB
.name 13B
encodings.xml 172B
modules.xml 266B
.mvn
wrapper
MavenWrapperDownloader.java 5KB
maven-wrapper.jar 47KB
maven-wrapper.properties 116B
pom.xml 2KB
.gitignore 303B
springbootoss.iml 8KB
共 98 条
- 1
资源评论
团子.
- 粉丝: 137
- 资源: 18
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功