一:pom添加以来jar
???<dependency> ???????<groupId>com.aliyun.oss</groupId> ???????<artifactId>aliyun-sdk-oss</artifactId> ???????<version>2.8.3</version> ???</dependency>
当然,也能下载jar导入项目;
二:关于文件上传的参数配置
新建 properties文件
三:在业务逻辑层获取阿里云对象
1:先获取属性文件
final static String endpoint = OssUtil.getConfig("contract"); ???final static String accessKeyId = OssUtil.getConfig("accessKeyIdContract"); ???final static String accessKeySecret = OssUtil.getConfig("accessKeySecretContract"); ???final static String bucketName = OssUtil.getConfig("bucketName4C");
2:属性文件的读取方法;
public class OssUtil { ???protected static Logger logger = LogManager.getLogger(OssUtil.class); ???public static String getConfig(String key) { ???????String value = ""; ???????OssUtil propertiesUtil = new OssUtil(); ???????InputStream in = null; ???????Properties props = new Properties(); ???????in = propertiesUtil.getClass().getResourceAsStream("/oss.properties"); ???????try { ???????????props.load(in); ???????} catch (IOException e) { ???????????e.printStackTrace(); ???????????logger.error("getConfig io error:", e); ???????} finally { ???????????if (in != null) { ???????????????try { ???????????????????in.close(); ???????????????} catch (IOException e2) { ???????????????????e2.printStackTrace(); ???????????????????logger.error("close io error:", e2); ???????????????} ???????????} ???????} ???????value = props.getProperty(key); ???????logger.info("property info :" + key + ":" + value); ???????System.out.println(value); ???????return value; ???} ???}
四:判断你要上传的文件是不是存在
@Override ???public boolean existFileInOss(String fileName) { ???????// TODO Auto-generated method stub ???????// 创建OSSClient实例 ???????OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret); ???????// Object是否存在 ???????boolean found = ossClient.doesObjectExist(bucketName, fileName); ???????// 关闭client ???????ossClient.shutdown(); ???????return found; ???}
五:上传方法
???@Override ???public void uploadFile(MultipartFile file,String fileId) { ???????//String fileName =file.getOriginalFilename(); ????????// 创建OSSClient实例 ???????OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret); ???????// 上传文件流 ???????try { ???????????ossClient.putObject(bucketName, fileId, file.getInputStream()); ???????} catch (OSSException e) { ???????????e.printStackTrace(); ???????} catch (ClientException e) { ???????????e.printStackTrace(); ???????} catch (IOException e) { ???????????e.printStackTrace(); ???????} ???????// 关闭client ???????ossClient.shutdown(); ???}
六:获取文件访问地址
@Override ???public String getFileUrl(String fileId) { ???????//服务器端生成url签名字串 ???????OSSClient Server ?= new OSSClient(endpoint, ?accessKeyId, accessKeySecret); ???????Date expiration = null; ???????expiration = new Date(System.currentTimeMillis()+1800000); ???????//logger.debug("请求的fileid: " + fileId); ???????GeneratePresignedUrlRequest request = new GeneratePresignedUrlRequest(bucketName, fileId, HttpMethod.GET); ???????//设置过期时间 ???????request.setExpiration(expiration); ???????// 生成URL签名(HTTP GET请求) ???????URL signedUrl = Server.generatePresignedUrl(request); ???????//logger.debug("oss文件url: " + signedUrl); ???????return signedUrl.toString(); ???}
七:删除文件
// 删除文件 ???????//ossClient.deleteObject(bucketName, "文件的全路径,如:cia/merged.pdf"); ?
八:控制台接收文件,调用业务层
public @ResponseBody String Upload(HttpServletRequest request, HttpServletResponse response, ???????????BsPayBussiness bussinessm, @RequestParam("file") MultipartFile file) {}
上传文件到阿里云OSS对象存储,查询访问地址,删除文件
原文地址:https://www.cnblogs.com/GH0522/p/9567150.html