zoukankan      html  css  js  c++  java
  • 尚筹网11阿里云OSS对象存储

    阿里云OSS对象存储参考文章

    将OSS引入项目

    思路

    准备OSSProperties

    package com.adom.crowd.config;
    
    import org.springframework.boot.context.properties.ConfigurationProperties;
    import org.springframework.stereotype.Component;
    
    @Component
    @ConfigurationProperties(prefix = "aliyun.oss")
    public class OSSProperties {
        private String endPoint;
        private String bucketName;
        private String accessKeyId;
        private String accessKeySecret;
        private String bucketDomain;
    
        public OSSProperties() {
        }
    
        public OSSProperties(String endPoint, String bucketName, String accessKeyId, String accessKeySecret, String bucketDomain) {
            this.endPoint = endPoint;
            this.bucketName = bucketName;
            this.accessKeyId = accessKeyId;
            this.accessKeySecret = accessKeySecret;
            this.bucketDomain = bucketDomain;
        }

    编写配置文件

    server:
      port: 5000
    spring:
      application:
        name: adom-crowd-project
    eureka:
      client:
        service-url: http://localhost:1000/eureka
    aliyun:
      oss:
        access-key-id: 自行获取
        access-key-secret: 自行获取
        bucket-domain: 自行获取
        bucket-name:自行获取
        end-point: 自行获取

    工具方法

    导入依赖

    <!-- OSS 客户端 SDK -->
    <dependency>
        <groupId>com.aliyun.oss</groupId>
        <artifactId>aliyun-sdk-oss</artifactId>
        <version>3.5.0</version>
    </dependency>

    编写工具方法

    /*** 专门负责上传文件到 OSS 服务器的工具方法
     * @param endpoint OSS 参数
     * @param accessKeyId OSS 参数
     * @param accessKeySecret OSS 参数
     * @param inputStream 要上传的文件的输入流
     * @param bucketName OSS 参数
     * @param bucketDomain OSS 参数
     * @param originalName 要上传的文件的原始文件名
     * @return 包含上传结果以及上传的文件在 OSS 上的访问路径 */
    public static ResultEntity<String> uploadFileToOss(
            String endpoint,
            String accessKeyId,
            String accessKeySecret,
            InputStream inputStream,
            String bucketName,
            String bucketDomain,
            String originalName) {
        // 创建 OSSClient 实例。
        OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
        // 生成上传文件的目录
        String folderName = new SimpleDateFormat("yyyyMMdd").format(new Date());
        // 生成上传文件在 OSS 服务器上保存时的文件名
        // 原始文件名:beautfulgirl.jpg
        // 生成文件名:wer234234efwer235346457dfswet346235.jpg
        // 使用 UUID 生成文件主体名称
        String fileMainName = UUID.randomUUID().toString().replace("-", "");
        // 从原始文件名中获取文件扩展名
        String extensionName = originalName.substring(originalName.lastIndexOf("."));
        // 使用目录、文件主体名称、文件扩展名称拼接得到对象名称
        String objectName = folderName + "/" + fileMainName + extensionName;
        try {
            // 调用 OSS 客户端对象的方法上传文件并获取响应结果数据
            PutObjectResult putObjectResult = ossClient.putObject(bucketName, objectName, inputStream);
            // 从响应结果中获取具体响应消息
            ResponseMessage responseMessage = putObjectResult.getResponse();
            // 根据响应状态码判断请求是否成功
            if (responseMessage == null) {
                // 拼接访问刚刚上传的文件的路径
                String ossFileAccessPath = bucketDomain + "/" + objectName;
                // 当前方法返回成功
                return ResultEntity.sucessWithData(ossFileAccessPath);
            } else {
                // 获取响应状态码
                int statusCode = responseMessage.getStatusCode();
                // 如果请求没有成功,获取错误消息
                String errorMessage = responseMessage.getErrorResponseAsString();
                // 当前方法返回失败
                return ResultEntity.failed(" 当 前 响 应 状 态 码 =" + statusCode + " 错 误 消 息 =" + errorMessage);
            }
        } catch (Exception e) {
            e.printStackTrace();
            // 当前方法返回失败
            return ResultEntity.failed(e.getMessage());
        } finally {
            if (ossClient != null) {
                // 关闭
                ossClient.shutdown();
            }
        }
    }

    今后项目中重定向问题

    描述问题:

    如:

    http://localhost:4000

    http://localhost:80

    由于两个端口号不同,因此不是相同的网站,浏览器工作时不会使用相同的Cookie

    解决问题

    以后重定向的地址都按照Zuul访问的方式写地址

    return "redirect:http://www.crowd.com/auth/member/to/login/page";

    默认路由到auth

    Zuul需要依赖entity工程

    问题描述

    通过zuul访问所有工程,在成功登陆之后,要前往会员中心页面.

    这时,zuulFilter中需要从session域读取MemberLoginVO对象.SpringSession会从Redis中加载相关信息.

    相关信息中包含了MemberLoginVO的全类名

    需要根据这个全类名找到MemberLoginVO,用来反序列化.

    可是我们之前没有让Zuul工程依赖entity工程,所以找不到MemberLoginVO.因此找不到类.

    解决问题

    Zuul工程依赖entity工程

    <dependency>
        <groupId>com.adom</groupId>
        <artifactId>member-entity</artifactId>
        <version>1.0.0-SNAPSHOT</version>
    </dependency>

    从个人中心跳转到发起项目的表单页面 

    第一步点击我的众筹

    <a th:href="@{/member/my/crowd}">我的众筹</a><span class="badge"><i class="glyphicon glyphicon-chevron-right"></i></span>

    registry.addViewController("/member/my/crowd").setViewName("member-crowd");
    
    准备member-crowd.html页面
  • 相关阅读:
    ok~加油!
    解析window.open链接的参数
    Arrya数组添加过滤条件
    Oracle 查询今天、昨日、本周、本月和本季度的所有记录
    Sql Server日期查询-SQL查询今天、昨天、7天内、30天
    Lua 中 pairs 和 ipairs 的区别
    关于SignalR连接数量问题的记录
    IceStorm示例运行步骤
    从 OPC 到 OPC UA
    SQL Server 2008 R2 Express Profiler
  • 原文地址:https://www.cnblogs.com/Adam-Ye/p/13378017.html
Copyright © 2011-2022 走看看