Java 上传图片至阿里OSS文件存储系统

首先先要去购买阿里的oss云文件存储

https://www.aliyun.com/product/oss/

获得你的相对应属性

String endpoint = "...";
String accessKeyId = "...";
String accessKeySecret = "...";
String bucketName = "...";

导入依赖

        <dependency>
            <groupId>com.aliyun.oss</groupId>
            <artifactId>aliyun-sdk-oss</artifactId>
            <version>3.10.2</version>
        </dependency>

以上传文件夹为例,工作中正好遇到这个需求,简单记录一下。

前端界面

接口

ossUtils 工具类

cesh

/**
     * 上传文件
     *  [email protected]
     */
    public String uploadImage(MultipartFile file) throws Exception {
        InputStream in = file.getInputStream();
        String fileOriginalFilename = file.getOriginalFilename();
        String fileName = fileOriginalFilename.split("/")[1];
        ObjectMetadata metadata = new ObjectMetadata();
        metadata.setContentLength(in.available());
        metadata.setCacheControl("no-cache");
        metadata.setHeader("Access-Control-Allow-Origin", "*");
        metadata.setHeader("Access-Control-Allow-Methods", "POST GET HEAD PUT DELETE");
        metadata.setHeader("Access-Control-Max-Age", "3600");
        metadata.setHeader("Pragma", "no-cache");
        metadata.setContentEncoding("utf-8");
        metadata.setContentType(fileName);
        OSS oss = new OSSClientBuilder().build(endPoint, accessKeyId, accessKeySecret);
        oss.putObject(bucket, fileDir + fileName, in, metadata);
        oss.shutdown();
        in.close();
        return "https://" + bucket + "." + endPoint + "/" + fileDir + fileName;
    }

老样子,写完测试 

OK!!!

 

Oss utils


import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import com.aliyun.oss.model.ObjectMetadata;
import org.springframework.stereotype.Component;
import org.springframework.web.multipart.MultipartFile;
import java.io.InputStream;
import java.util.*;

/**
 * @author [email protected]
 * @date 2020/11/21 9:13
 */
@Component
public class OSSUtils {

    private static final String END_POINT = "oss-cn-qingdao.aliyuncs.com";
    private static final String ACCESS_KEY_ID = "";
    private static final String ACCESS_KEY_SECRET = "";
    private static final String BUCKET = "";
    private static final String FILE_DIR = "test/";

    /**
     * 上传文件
     * [email protected]
     */
    public String uploadImage(MultipartFile file) throws Exception {
        InputStream in = file.getInputStream();
        String fileName = file.getOriginalFilename();
        ObjectMetadata metadata = new ObjectMetadata();
        metadata.setContentLength(in.available());
        metadata.setCacheControl("no-cache");
        metadata.setHeader("Access-Control-Allow-Origin", "*");
        metadata.setHeader("Access-Control-Allow-Methods", "POST GET HEAD PUT DELETE");
        metadata.setHeader("Access-Control-Max-Age", "3600");
        metadata.setHeader("Pragma", "no-cache");
        metadata.setContentEncoding("utf-8");
        metadata.setContentType(getContentType(fileName));
        OSS oss = new OSSClientBuilder().build(END_POINT, ACCESS_KEY_ID, ACCESS_KEY_SECRET);
        oss.putObject(BUCKET, FILE_DIR + fileName, in, metadata);
        oss.shutdown();
        in.close();
        return "https://" + BUCKET + "." + END_POINT + "/" + FILE_DIR + fileName;
    }

    /**
     * 根据图片名 判断oss是否存在图片
     * @return
     */
    public boolean existsImg(String imgName) {
            OSS oss = new OSSClientBuilder().build(END_POINT, ACCESS_KEY_ID, ACCESS_KEY_SECRET);
            String ossFileName = FILE_DIR + imgName;
            return oss.doesObjectExist(BUCKET, ossFileName);           
        }

    private static String getContentType(String fileName) {
        String fileSuffix = fileName.split("\\.")[1];
        switch (fileSuffix) {
            case "jpeg":
            case "jpg":
                return "image/jpeg";
            case "png":
                return "image/png";
        }
        return null;
    }
}

猜你喜欢

转载自blog.csdn.net/weixin_44912855/article/details/109890004