xiangpei
2025-05-14 47cd9ecc0eff38ffe6b3b794b2bf197e958f4403
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
package com.mindskip.xzs.utility.oss;
 
 
import com.amazonaws.auth.AWSCredentials;
import com.amazonaws.auth.AWSStaticCredentialsProvider;
import com.amazonaws.auth.BasicAWSCredentials;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3ClientBuilder;
import com.amazonaws.services.s3.model.*;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
 
import java.io.IOException;
import java.io.InputStream;
 
@Component
public class AmazoneS3 {
 
 
    private static String accessKeyId;
 
    private static String accessKeySecret;
 
    private static String bucketName;
 
    private static String regionName;
 
 
    @Value("${S3.accessKeyId}")
    public void setAccessKeyId(String accessKeyId) {
        this.accessKeyId = accessKeyId;
    }
 
 
    @Value("${S3.accessKeySecret}")
    public void setAccessKeySecret(String accessKeySecret) {
        this.accessKeySecret = accessKeySecret;
    }
 
 
    @Value("${S3.bucketName}")
    public void setBucketName(String bucketName) {
        this.bucketName = bucketName;
    }
 
    @Value("${S3.region}")
    public void setRegionName(String regionName) {
        this.regionName = regionName;
    }
 
    public static String getAccessKeyId() {
        return accessKeyId;
    }
 
    public static String getAccessKeySecret() {
        return accessKeySecret;
    }
 
    public static String getBucketName() {
        return bucketName;
    }
 
    public static String getRegionName() {
        return regionName;
    }
 
    public AmazonS3 amazonS3() {
        AWSCredentials awsCredentials = new BasicAWSCredentials(getAccessKeyId(), getAccessKeySecret());
        AmazonS3ClientBuilder builder = AmazonS3ClientBuilder.standard().withCredentials(new AWSStaticCredentialsProvider(awsCredentials));
        //设置S3的地区
        builder.setRegion(getRegionName());
        AmazonS3 s3Client = builder.build();
        return s3Client;
    }
 
    /**
     * 上传
     * @param fileName
     * @param inputStream
     * @return
     * @throws IOException
     */
    public PutObjectResult upload(String fileName, InputStream inputStream) throws IOException {
        AmazonS3 amazonS3Client =  this.amazonS3();
        ObjectMetadata objectMetadata = new ObjectMetadata();
        objectMetadata.setContentType("plain/text");
        objectMetadata.setContentLength(Long.valueOf(inputStream.available()));
        PutObjectResult putObjectRequest = amazonS3Client.putObject(new PutObjectRequest(AmazoneS3.getBucketName(), fileName, inputStream, objectMetadata));
 
        return putObjectRequest ;
    }
 
    /**
     * 下载
     * @param key
     * @return
     */
    public InputStream download(String key){
        S3Object object = this.amazonS3().getObject(new GetObjectRequest(getBucketName(), key));
        return object.getObjectContent();
    }
}