OSS 上传图片


final OSS oss;
    final AliOssProperties ossProperties;
    @RequestMapping("/file")
    public R uploadFile(@RequestPart MultipartFile file) throws IOException {
        String newFileName = AliyunOssUtil.getNewFileName(ExtUtil.fileExtName(file.getOriginalFilename()));
        PutObjectResult resp = oss.putObject(ossProperties.getBucketName(),
                    newFileName
                ,
                file.getInputStream()
        );
        System.out.println(resp);
        return R.res()
                .put("url", ossProperties.getHost()+'/'+newFileName);
    }



package com.github.lyr.common.util;


import cn.hutool.core.date.DateTime;



/**
 * @author 大雨两点
 * @version 1.0
 * @date 2021/1/17 21:45
 */

public   class AliyunOssUtil {
    // private static final Logger logger = LoggerFactory.getLogger(com.javatribe.apishare.utils.AliyunOssUtil.class);
    /**
     * 博客上传的图片放在article这个文件夹中
     */
    private static final String BASE_FOLDER = "javaweb_upload/";

    /**
     * 单张图片大小上限为5M
     */
    private static final long MAX_SIZE = 5 * 1000 * 1000;

    /**
     * 允许的文件类型
     */
    private static final String[] FILE_TYPES = {/*"GIF", "JPG", "JPEG", "PNG","bmp",*/"jpg","png","tif","gif","pcx"
            ,"tga","exif","fpx","svg","psd","cdr","pcd","dxf","ufo","eps","ai","raw","WMF","webp","avif"};

    /**
     * 将原先的文件名替换为时间序列
     * @param fileType
     * @return
     */
    public static String getNewFileName(String fileType){
        DateTime dateTime = new DateTime();
        StringBuilder stringBuilder = new StringBuilder();
        stringBuilder.append(BASE_FOLDER);
        stringBuilder.append(dateTime.toString("yyyyMMddHHmmss"));
        stringBuilder.append(getMillTime(dateTime));
        stringBuilder.append(".");
        stringBuilder.append(fileType);
        return stringBuilder.toString();
    }

    /**
     * 获取格式化之后剩下的毫秒值
     * @param dateTime
     * @return
     */
    public static long getMillTime(DateTime dateTime){
        long time = dateTime.getTime() % 10000;
        return time;
    }

    // /**
    //  * 上传图片, 根据各种情况返回对应的枚举项
    //  * @param oss 对象存储客户端对象
    //  * @param multipartFile 上传的文件
    //  * @param bucketName oss桶名
    //  */
    // public static UploadStatus uploadImage(OSS oss, MultipartFile multipartFile, String bucketName) {
    //     if (multipartFile == null || multipartFile.getSize() == 0) {
    //         return UploadStatus.FILE_ISNULL;
    //     }
    //     if (isOverflow(multipartFile.getSize())) {
    //         return UploadStatus.FILE_SIZE_OVERFLOW;
    //     }
    //     String fileName = multipartFile.getOriginalFilename();
    //     if (fileName == null || "".equals(fileName.trim())) {
    //         return UploadStatus.FILE_TYPE_NOTMATCH;
    //     }
    //     String[] temp = fileName.split("\\.");
    //     String fileType = temp[temp.length - 1];
    //     if(!isMatchType(fileType)) {
    //         return UploadStatus.FILE_TYPE_NOTMATCH;
    //     }
    //     String newFileName = getNewFileName(fileType);
    //     try {
    //         oss.putObject(bucketName, newFileName, new ByteArrayInputStream(multipartFile.getBytes()));
    //     } catch (IOException e) {
    //         logger.info(e.getLocalizedMessage());
    //         return UploadStatus.FILEUPLOAD_FAIL;
    //     }
    //     UploadStatus uploadStatus = UploadStatus.FILEUPLOAD_SUCCESS;
    //     uploadStatus.setMessage("/" + newFileName);
    //     return uploadStatus;
    // };

    /**
     * 判断文件大小知否超过上限
     * @param fileSize 文件大小
     * @return
     */
    public static boolean isOverflow(long fileSize) {
        return fileSize > MAX_SIZE ? true : false;
    }

    /**
     * 判断上传的文件类型是否满足条件
     * @param fileType
     * @return
     */
    public static boolean isImg(String fileType) {
        fileType = fileType.toUpperCase();
        for (String type : FILE_TYPES) {
            if (type.equalsIgnoreCase(fileType)) {
                return true;
            }
        }
        return false;
    }

}




package com.github.lyr.common.util;

import cn.hutool.core.util.StrUtil;

/**
 * @Author lyr
 * @create 2021/2/15 22:24
 */
public class ExtUtil {
    /**
     * 获取文件后缀名字
     * @param name
     * @return
     */
    public static String fileExtName(String name) {
        if (StrUtil.isBlank(name)) {
            throw new RuntimeException("it is blank str");
        }
        return name.substring(name.lastIndexOf(".") + 1);
    }
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值