liujie
7 小时以前 281c6016ab0ea5b2eeecb9167d9ee690b6fdac1f
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
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";
    }
}