zoukankan      html  css  js  c++  java
  • oss图片上传

    1.导包

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

    2.工具类

    package com.dlb.utils;
    
    import com.aliyun.oss.OSS;
    import com.aliyun.oss.OSSClientBuilder;
    import com.aliyun.oss.model.ObjectMetadata;
    import lombok.Data;
    import org.springframework.web.multipart.MultipartFile;
    
    import java.io.*;
    import java.net.URL;
    import java.util.Date;
    //图片上传
    @Data
    public class OSSClientUtil {
        // yourEndpoint填写Bucket所在地域对应的Endpoint。以华东1(杭州)为例,Endpoint填写为https://oss-cn-hangzhou.aliyuncs.com。
        private  String endpoint = "oss-cn-shanghai.aliyuncs.com";
        // 阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。
        private String accessKeyId = "XXXXXXXXX";
        private String accessKeySecret = "XXXXXXX";
        // 填写Bucket名称。
        private String bucketName = "admin-dlb-XXXXX";
        //文件存储目录
        private String fileDir = "data/";
    
        private OSS ossClient = null;
    
        public OSSClientUtil(){
            ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
        }
    
        /**
         * 初始化
         */
        public void init() {
            ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
        }
    
        /**
         * 销毁
         */
        public void destory() {
            ossClient.shutdown();
        }
        /*
        * 文件源
        * 文件名唯一否则上传失效!例如:asd.jpg
        * */
        public String uploadOss(MultipartFile file, String fileName) {
            //输入流
            InputStream is = null;
            try{
                is = file.getInputStream();
                //文件类型
                ObjectMetadata metadata = getMetadata(is, fileName);
                //上传
                ossClient.putObject(bucketName,fileName,is,metadata);
    
                String url = getUrl(fileDir + "");
                System.err.println("url:****" + url);
                //拼接路径
                String h = "https://"+bucketName+"."+endpoint+"/"+fileName;
                System.err.println("拼接:%%%%%%"+h);
                destory();
                return h;
    
            }catch (Exception e){
                e.printStackTrace();
                return null;
            }finally {
                if (is!=null){
                    try {
                        is.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }
        }
    
        /**
         * 设置过期时间  设置上传的目录key
         */
        public String getUrl(String path) {
            // 设置URL过期时间为10年  3600l* 1000*24*365*10
            Date expiration = new Date(new Date().getTime() + 3600l * 1000 * 24 * 365 * 10);
            // 生成URL
            URL url = ossClient.generatePresignedUrl(bucketName, path, expiration);
            if (url != null) {
                return url.toString();
            }
            return null;
        }
        /**
         * 要上传的文件类型
         * ---->需要判断文件后缀名
         */
        public ObjectMetadata getMetadata(InputStream fis,String fileName) throws IOException {
            ObjectMetadata metadata = new ObjectMetadata();
            //这里需要判断文件后缀名
            metadata.setContentType(getContentType(fileName));
            metadata.setContentLength(fis.available());
            metadata.setCacheControl("no-cache");
            metadata.setHeader("Pragma", "no-cache");
            metadata.setContentDisposition("inline;filename=" + fileName);
            return metadata;
        }
        /**
        * 判断要上传文件的后缀名
        */
        public static String getContentType(String fileName) {
            String filenameExtension = fileName.substring(fileName.lastIndexOf("."));
            if (filenameExtension.equalsIgnoreCase(".bmp")) {
                return "image/bmp";
            }
            if (filenameExtension.equalsIgnoreCase(".gif")) {
                return "image/gif";
            }
            if (filenameExtension.equalsIgnoreCase(".jpeg") ||
                    filenameExtension.equalsIgnoreCase(".jpg") ||
                    filenameExtension.equalsIgnoreCase(".png")) {
                return "image/jpeg";
            }
            if (filenameExtension.equalsIgnoreCase(".html")) {
                return "text/html";
            }
            if (filenameExtension.equalsIgnoreCase(".txt")) {
                return "text/plain";
            }
            if (filenameExtension.equalsIgnoreCase(".vsd")) {
                return "application/vnd.visio";
            }
            if (filenameExtension.equalsIgnoreCase(".pptx") ||
                    filenameExtension.equalsIgnoreCase(".ppt")) {
                return "application/vnd.ms-powerpoint";
            }
            if (filenameExtension.equalsIgnoreCase(".docx") ||
                    filenameExtension.equalsIgnoreCase(".doc")) {
                return "application/msword";
            }
            if (filenameExtension.equalsIgnoreCase(".xml")) {
                return "text/xml";
            }
            return "image/jpeg";
        }
        /*
        //       // 将图片缩放为固定宽高100 px后,再旋转90°。
    //        //String style = "image/resize,m_fixed,w_100,h_100/rotate,90";
    //        // 指定签名URL过期时间为10分钟。
    //        Date expiration = new Date(new Date().getTime() + 1000 * 60 * 10 );
    //        GeneratePresignedUrlRequest req = new GeneratePresignedUrlRequest(
    //                bucketName, objectName, HttpMethod.GET);
    //        req.setExpiration(expiration);
    //       // req.setProcess(style);
    //        URL signedUrl = ossClient.generatePresignedUrl(req);
    //        System.out.println(signedUrl);
    
            // 关闭OSSClient。
            ossClient.shutdown();
        * */
    
    }

    3.服务调用

    @RequestMapping("/xxx")
        public String addCar(MultipartFile file) {//图片名
            String fileName = System.currentTimeMillis()+file.getOriginalFilename();
            /**
            //图片保存到指定地方
             //HttpServletRequest request
             //项目路径
            String realPath = request.getServletContext().getRealPath("/upload/");
            String path = "E:\\a\\";//本地磁盘路径
            //开始保存本地 需要抛异常
            file.transferTo(new File(realPath+fileName));*///上传到oss
            OSSClientUtil ossClientUtil = new OSSClientUtil();
            ossClientUtil.uploadOss(file,fileName);
            System.err.println("照片上传完毕");return "xxxxxx";
        }
  • 相关阅读:
    iOS
    iOS
    ios
    iOS
    ios
    ios
    iOS
    ios
    常用NSString的方法
    instancetype
  • 原文地址:https://www.cnblogs.com/9080dlb/p/15713018.html
Copyright © 2011-2022 走看看