liujie
2023-05-22 9f2315d92cc93f8f431805a10ea9ce3f79fa7eb2
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
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
package com.stylefeng.guns.modular.system.utils;
 
import com.amazonaws.AmazonServiceException;
import com.amazonaws.auth.AWSStaticCredentialsProvider;
import com.amazonaws.auth.BasicAWSCredentials;
import com.amazonaws.regions.Regions;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3Client;
import com.amazonaws.services.s3.model.*;
 
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
 
public class UploadUtil {
    private static String access_key_id = "AKIARXDMFH3VPKPIBFNR";
    private static String secret_key_id = "Atb2v2qBbbqp52n1hLtrMBs19ohGRBUE/xZAuR6N";
    private static String bucket_name = "ccaawsbucket";
    private static AmazonS3 s3Client;
    private static List<String> object_list = new ArrayList<>();
    static {
        //通过sdk创建与S3的链接
        BasicAWSCredentials awsCredentials = new BasicAWSCredentials(access_key_id, secret_key_id);
        //默认地区新加坡
        s3Client = AmazonS3Client.builder()
                .withRegion(Regions.US_WEST_1)//可以根据自己的需求进行选择
                .withCredentials(new AWSStaticCredentialsProvider(awsCredentials))
                .build();
 
    }
 
 
    //创建桶
    public static Bucket createBucket() {
        Bucket b = null;
        if (s3Client.doesBucketExistV2(bucket_name)) {
            System.out.format("Bucket %s already exists.\n", bucket_name);
            b = getBucket(bucket_name);
        } else {
            try {
                b = s3Client.createBucket(bucket_name);
            } catch (AmazonS3Exception e) {
                System.err.println(e.getErrorMessage());
            }
        }
        return b;
    }
 
    //获取桶
    public static Bucket getBucket(String bucket_name) {
        Bucket named_bucket = null;
        List<Bucket> buckets = s3Client.listBuckets();
        for (Bucket b : buckets) {
            System.err.println(b.getName());
            if (b.getName().equals(bucket_name)) {
                named_bucket = b;
            }
        }
        return named_bucket;
    }
 
    //上传文件到桶
    public static String PutObject(String key_name,File file){
//        String key_name = Paths.get(file_path).getFileName().toString();
        try {
            s3Client.putObject(bucket_name, key_name, file);
            return "https://ccaawsbucket.s3.us-west-1.amazonaws.com/"+key_name;
        } catch (Exception e) {
            e.printStackTrace();
//            System.err.println(e.getErrorMessage());
        }
        System.err.println("Done!");
        return null;
    }
 
    //删除对象
    public static void DeleteObject(String object_key){
        try {
            s3Client.deleteObject(bucket_name, object_key);
        } catch (AmazonServiceException e) {
            System.err.println(e.getErrorMessage());
        }
        System.err.println("Done!");
    }
 
    //删除桶下的所有对象
    public static void DeleteObjectALL() {
        try {
            String[] object_keys = QueryObjectALL();
            DeleteObjectsRequest dor = new DeleteObjectsRequest(bucket_name)
                    .withKeys(object_keys);;
            s3Client.deleteObjects(dor);
        } catch (AmazonServiceException e) {
            System.err.println(e.getErrorMessage());
        }
        System.err.println("Done!");
    }
 
    //上传json到桶(特性化处理上传到文件夹)
    public static void PutJsonString(String file_name,String content){
        try {
 
            s3Client.putObject(bucket_name, file_name, content);
        } catch (AmazonServiceException e) {
            System.err.println(e.getErrorMessage());
        }
        System.err.println("Done!");
    }
 
    //查询指定桶下所有的对象
    public static String[] QueryObjectALL(){
        ListObjectsV2Result result = s3Client.listObjectsV2(bucket_name);
        List<S3ObjectSummary> objects = result.getObjectSummaries();
        for (S3ObjectSummary os : objects) {
            object_list.add(os.getKey());
            System.err.println("* " + os.getKey());
        }
        String[] object_keys = object_list.stream().map(el->el.toString()).toArray(String[]::new);
        object_list.clear();
        return object_keys;
    }
 
    //下载指定文件(key_name桶名)
    public static void GetObject(String key_name){
        try {
            S3Object o = s3Client.getObject(bucket_name, key_name);
            S3ObjectInputStream s3is = o.getObjectContent();
            FileOutputStream fos = new FileOutputStream(new File(key_name));
            byte[] read_buf = new byte[1024];
            int read_len = 0;
            while ((read_len = s3is.read(read_buf)) > 0) {
                fos.write(read_buf, 0, read_len);
            }
            s3is.close();
            fos.close();
        } catch (AmazonServiceException e) {
            System.err.println(e.getErrorMessage());
            System.exit(1);
        } catch (FileNotFoundException e) {
            System.err.println(e.getMessage());
            System.exit(1);
        } catch (IOException e) {
            System.err.println(e.getMessage());
            System.exit(1);
        }
        System.out.println("Done!");
    }
 
    //删除指定桶下的指定对象
    public static void DeleteAssignObject(String appBucket, String appName) {
        appName = "public/" + appName;
        try {
            s3Client.deleteObject(appBucket, appName);
        } catch (AmazonServiceException e) {
            System.err.println(e.getErrorMessage());
        }
        System.err.println("Done!");
    }
 
    //上传指定json到桶(特性化处理上传到文件夹)
    public static void PutAssignJsonString(String appBucket, String file_name,String content){
        try {
            s3Client.putObject(appBucket, file_name, content);
        } catch (AmazonServiceException e) {
            System.err.println(e.getErrorMessage());
        }
        System.err.println("Done!");
    }
    public static void main(String[] args) {
//        PutObject("C:\\Users\\Admin\\Desktop\\1.jpg");
    }
}