阿里云OSS配置

1,305 阅读2分钟

阿里云OSS配置

1、首先购买阿里云OSS服务。

地址:阿里云OSS

2、购买之后进入控制台,创建一个Bucket

OSS控制台首页
创建一个Bucket

3、打开创建好的Bucket,如图所示

Bucket列表

4、创建AccessKey

创建AccessKey

创建阿里云OSS上传工具类

1、参数配置接口

附:在我的毕设项目中的位置:xiaoyou3\xiaoyou_tools\src\main\java\com\lgy\tools\common\utils中的AliyunOSSConfigConstant接口

public interface AliyunOSSConfigConstant {
    /**
     * 仓库名称
     */
     String BUCKET_NAME = "你的oss名称";
    

    /**
     * 地域节点
     */
     String END_POINT = "oss-cn-beijing.aliyuncs.com";//例如

    /**
     * AccessKey ID
     */
     String AccessKey_ID = "你创建好的AccessKey ID";

    /**
     * Access Key Secret
     */
     String AccessKey_Secret = "你创建好的Access Key Secret";

    /**
     * 子目录文件夹
     */
     String FILE_HOST = "如果有子目录则指定";
}

附:到此在我的毕设项目中已经配置完成,如果想要了解阿里云OSS的使用,可以继续往下看。

2、工具类配置

public class AliyunOSSUtil implements AliyunOSSConfigConstant {
    private static final org.slf4j.Logger logger = LoggerFactory.getLogger(AliyunOSSUtil.class);
    private static String FILE_URL;
    private static String bucketName = AliyunOSSConfigConstant.BUCKET_NAME;
    private static String endpoint = AliyunOSSConfigConstant.END_POINT;
    private static String accessKeyId = AliyunOSSConfigConstant.AccessKey_ID;
    private static String accessKeySecret = AliyunOSSConfigConstant.AccessKey_Secret;
    private static String fileHost = AliyunOSSConfigConstant.FILE_HOST;

    /**
     * 上传文件。
     *
     * @param file 需要上传的文件路径
     * @return 如果上传的文件是图片的话,会返回图片的"URL",如果非图片的话会返回"非图片,不可预览。文件路径为:+文件路径"
     */
    public static String upLoad(File file) {
        // 默认值为:true
        boolean isImage = true;
        // 判断所要上传的图片是否是图片,图片可以预览,其他文件不提供通过URL预览
        try {
            Image image = ImageIO.read(file);
            isImage = image == null ? false : true;
        } catch (IOException e) {
            e.printStackTrace();
        }

        logger.info("------OSS文件上传开始--------" + file.getName());

        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
        String dateStr = format.format(new Date());

        // 判断文件
        if (file == null) {
            return null;
        }
        // 创建OSSClient实例。
        OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);
        try {
            // 判断容器是否存在,不存在就创建
            if (!ossClient.doesBucketExist(bucketName)) {
                ossClient.createBucket(bucketName);
                CreateBucketRequest createBucketRequest = new CreateBucketRequest(bucketName);
                createBucketRequest.setCannedACL(CannedAccessControlList.PublicRead);
                ossClient.createBucket(createBucketRequest);
            }
            // 设置文件路径和名称
            String fileUrl = fileHost + "/" + (dateStr + "/" + UUID.randomUUID().toString().replace("-", "") + "-" + file.getName());
            //如果是图片,则图片的URL为:....
            if (isImage) {
                FILE_URL = "https://" + bucketName + "." + endpoint + "/" + fileUrl;
            } else {
                FILE_URL = "非图片,不可预览。文件路径为:" + fileUrl;
            }

            // 上传文件
            PutObjectResult result = ossClient.putObject(new PutObjectRequest(bucketName, fileUrl, file));
            // 设置权限(公开读)
            ossClient.setBucketAcl(bucketName, CannedAccessControlList.PublicRead);
            if (result != null) {
                logger.info("------OSS文件上传成功------" + fileUrl);
            }
        } catch (OSSException oe) {
            logger.error(oe.getMessage());
        } catch (ClientException ce) {
            logger.error(ce.getErrorMessage());
        } finally {
            if (ossClient != null) {
                ossClient.shutdown();
            }
        }
        return FILE_URL;
    }
 }

后台文件上传示例

附:单文件和多文件都可以使用此方法

@RequestMapping("/uploadNewsImg")
@ResponseBody
public Map<String,Object> uploadNewsImg(@RequestParam("imgFile") List<MultipartFile> imgFiles){
    //创建一个Map用于响应状态码和url
    Map<String, Object> map = new HashMap<>();
    //创建一个url集合
    List<String> data = new ArrayList<>();
    for (MultipartFile imgFile : imgFiles) {
        String filename = imgFile.getOriginalFilename();
        System.out.println(filename);
        try {
            if (imgFile != null) {
                if (!"".equals(filename.trim())) {
                    File newFile = new File(filename);
                    FileOutputStream os = new FileOutputStream(newFile);
                    os.write(imgFile.getBytes());
                    os.close();
                    imgFile.transferTo(newFile);
                    // 上传到OSS
                    String uploadUrl = AliyunOSSUtil.upLoad(newFile);
                    //删除临时文件
                    newFile.delete();
                    //添加到url集合中
                    data.add(uploadUrl);
                }
            }
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }
    //错误码,0为正确
    map.put("error",0);
    map.put("data",data);
    return map;
}