package com.ruoyi.common.utils;
|
|
import com.aliyun.oss.OSSClient;
|
import com.aliyun.oss.model.ObjectMetadata;
|
import com.aliyun.oss.model.PutObjectResult;
|
import org.springframework.web.multipart.MultipartFile;
|
|
import javax.servlet.http.HttpServletRequest;
|
import java.io.*;
|
import java.util.Objects;
|
import java.util.UUID;
|
|
public class OssUploadUtil {
|
public static String oss_domain = "https://yizhengcheng.oss-cn-chengdu.aliyuncs.com/";
|
public static String accessKeyId = "LTAI5tHYSpwifc3rqLYJoETo";
|
public static String accessKeySecret = "xrDyQ89h8P0alWW7rrLIW2D2rt7Eig";
|
public static String bucketName="yizhengcheng";
|
public static String endpoint = "oss-cn-chengdu.aliyuncs.com";
|
|
public static OSSClient ossClient = new OSSClient(endpoint, accessKeyId,accessKeySecret);
|
|
public static String ossUpload(HttpServletRequest request, MultipartFile file) throws IOException {
|
//CommonsMultipartFile file = (CommonsMultipartFile)multipartFile;
|
String fileName = "";
|
if (file != null && !"".equals(file.getOriginalFilename()) && file.getOriginalFilename() != null) {
|
InputStream content = file.getInputStream();//获得指定文件的输入流
|
ObjectMetadata meta = new ObjectMetadata();// 创建上传Object的Metadata
|
meta.setContentLength(file.getSize()); // 必须设置ContentLength
|
String originalFilename = file.getOriginalFilename();
|
fileName = UUID.randomUUID().toString().replaceAll("-", "") + originalFilename.subSequence(originalFilename.lastIndexOf("."), originalFilename.length());
|
ossClient.putObject(bucketName, "img/" + fileName, content, meta);// 上传Object.
|
if (fileName != null && !"".equals(fileName)) {
|
fileName = oss_domain + "img/" + fileName;
|
}
|
}
|
return fileName;
|
}
|
|
public static String obsUploadPdf(String fileType, ByteArrayOutputStream file) throws IOException {
|
String fileName = UUID.randomUUID() + ".pdf";
|
//获得指定文件的输入流
|
InputStream content = new ByteArrayInputStream(file.toByteArray());
|
ObjectMetadata meta = new ObjectMetadata();// 创建上传Object的Metadata
|
meta.setContentLength(Long.valueOf(file.size())); // 必须设置ContentLength
|
ossClient.putObject(bucketName, fileType + fileName, content, meta);// 上传Object.
|
if (fileName != null && !"".equals(fileName)) {
|
System.out.println(fileName);
|
fileName = oss_domain + fileType + fileName;
|
}
|
return fileName;
|
}
|
|
|
//上传图片
|
public static String uploadByteOSS(byte[] b) {
|
|
// byte[] content = "Hello OSS".getBytes();
|
|
// 以输入流的形式上传文件
|
String folder = "";
|
// 文件名
|
String timefile = UUID.randomUUID().toString().replaceAll("-","");// 文件名
|
String fileName = ".jpg";// 后缀扩展名
|
fileName = timefile + fileName;
|
|
Long fileSize = (long) b.length;
|
// String timefile = FORMATS;
|
//// String fileName = file.getName();
|
// file = timefile + file.substring(file.lastIndexOf("."));
|
// 创建上传Object的Metadata
|
ObjectMetadata metadata = new ObjectMetadata();
|
metadata.setContentLength(fileSize);
|
// 指定该Object被下载时的网页的缓存行为
|
metadata.setCacheControl("no-cache");
|
// 指定该Object下设置Header
|
metadata.setHeader("Pragma", "no-cache");
|
// 指定该Object被下载时的内容编码格式
|
metadata.setContentEncoding("utf-8");
|
// 文件的MIME,定义文件的类型及网页编码,决定浏览器将以什么形式、什么编码读取文件。如果用户没有指定则根据Key或文件名的扩展名生成,
|
// 如果没有扩展名则填默认值application/octet-stream
|
metadata.setContentType(getContentType(fileName));
|
// 指定该Object被下载时的名称(指示MINME用户代理如何显示附加的文件,打开或下载,及文件名称)
|
metadata.setContentDisposition("filename/filesize=" + fileName + "/" + fileSize + "Byte.");
|
|
PutObjectResult putResult = ossClient.putObject(bucketName, folder + fileName, new ByteArrayInputStream(b),
|
metadata);
|
//ossClient.shutdown();
|
String filepath = folder + fileName;
|
return oss_domain+filepath;
|
}
|
|
/**
|
* 通过文件名判断并获取OSS服务文件上传时文件的contentType
|
*
|
* @param fileName
|
* 文件名
|
* @return 文件的contentType
|
*/
|
public static String getContentType(String fileName) {
|
// 文件的后缀名
|
String fileExtension = fileName.substring(fileName.lastIndexOf("."));
|
if (".bmp".equalsIgnoreCase(fileExtension)) {
|
return "image/bmp";
|
}
|
if (".gif".equalsIgnoreCase(fileExtension)) {
|
return "image/gif";
|
}
|
if (".jpeg".equalsIgnoreCase(fileExtension) || ".jpg".equalsIgnoreCase(fileExtension)
|
|| ".png".equalsIgnoreCase(fileExtension)) {
|
return "image/jpeg";
|
}
|
if (".html".equalsIgnoreCase(fileExtension)) {
|
return "text/html";
|
}
|
if (".txt".equalsIgnoreCase(fileExtension)) {
|
return "text/plain";
|
}
|
if (".vsd".equalsIgnoreCase(fileExtension)) {
|
return "application/vnd.visio";
|
}
|
if (".ppt".equalsIgnoreCase(fileExtension) || "pptx".equalsIgnoreCase(fileExtension)) {
|
return "application/vnd.ms-powerpoint";
|
}
|
if (".doc".equalsIgnoreCase(fileExtension) || "docx".equalsIgnoreCase(fileExtension)) {
|
return "application/msword";
|
}
|
if (".xml".equalsIgnoreCase(fileExtension)) {
|
return "text/xml";
|
}
|
if (".mp4".equalsIgnoreCase(fileExtension)) {
|
return "video/mp4";
|
}
|
// 默认返回类型
|
return "image/jpeg";
|
}
|
}
|