教育在线系统开发学习(六)

课程笔记来自尚硅谷在线教育项目课程

对象存储OSS:
海量 安全 低成本 高可靠的云存储服务

过程:
创建Bucket;
图片url(https://edu-pc.oss-cn-shanghai.aliyuncs.com/%E5%BE%AE%E4%BF%A1%E5%9B%BE%E7%89%87_20200303205048.jpg)

java代码操作阿里云OSS

创建操作阿里云oss的许可证(id和密钥)
id:LTAI4GBVir38stcRUsSBhvzD
密钥:Qh8WLOEjSUjluqLZdVH59be2LyODoX
创建accesskey

引入依赖 ,创建配置文件,创建启动类
@SpringBootApplication(exclude = DataSourceAutoConfiguration.class) //避免自动加载数据库的内容了
(1)创建常量类,读取配置文件内容
(2)创建controller类 service类

package com.atguigu.oss.controller;

import com.atguigu.commonutils.R;
import com.atguigu.oss.service.OssService;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

@RestController    //交给spring管理,返回json数据
@RequestMapping("/eduoss/fileoss")
@CrossOrigin
public class OssController {
    @Autowired
    private OssService ossService;


    //上传图片得方法
    @PostMapping
    public R uploadOssFile(MultipartFile file ){
        //返回上传到oss得路径
        String url = ossService.uploadFileAvatar(file);
        return R.ok().data("url",url);
    }
}

(3)在service实现接口中得方法,实现上传文件到oss得过程

package com.atguigu.oss.service.impl;

import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import com.atguigu.oss.service.OssService;
import com.atguigu.oss.utils.ConstantPropertiesUtils;
import org.joda.time.DateTime;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;
import java.io.InputStream;
import java.util.UUID;

@Service
public class OssServiceImpl implements OssService {
    //上传代码到oss
    @Override
    public String uploadFileAvatar(MultipartFile file) {
        String endpoint = ConstantPropertiesUtils.END_POINT;
        String accessKeyID = ConstantPropertiesUtils.ACCESS_KEY_ID;
        String accessKeySecret = ConstantPropertiesUtils.ACCESS_KEY_SECRET;
        String bucketName = ConstantPropertiesUtils.BUCKET_NAME;

        try {
            //创建oss实例
            OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyID, accessKeySecret);
            //获取上传文件得输入流
            InputStream inputStream = file.getInputStream();

            //获取文件名称
            String filename = file.getOriginalFilename();

            //在文件名称里面添加随机唯一得值
            String uuid = UUID.randomUUID().toString().replaceAll("-","");
            filename = uuid+filename;

            //把文件按照日期进行分类
            //2020/11/12/01.jpg
            //获取当前日期
            String datePath = new DateTime().toString("yyyy/MM/dd");
            //拼接
            filename = datePath+'/'+filename;


            //调用oss方法实现上传
            //第一个参数是bucket名称  第二个参数是上传到oss文件路径和名称  第三个参数 上传文件输入流
            ossClient.putObject(bucketName, filename, inputStream);
            //关闭ossclient
            ossClient.shutdown();

            //把上传之后得文件路径返回
            //https://edu-pc.oss-cn-shanghai.aliyuncs.com/%E5%BE%AE%E4%BF%A1%E5%9B%BE%E7%89%87_20200303205048.jpg)
            String url = "https://"+bucketName+"."+endpoint+"/"+filename;
            return url;


        } catch (IOException e) {
            e.printStackTrace();
            return null;
        }

    }
}

nginx反向代理服务器

请求转发
在这里插入图片描述

负载均衡
在这里插入图片描述

动静分离

nginx.exe -s stop 需要手动停止
(1)配置nginx实现请求转发功能
在nginx.conf进行配置(默认端口80改成81)
在这里插入图片描述

上传头像前端整合

 <!-- 讲师头像:TODO -->      
 <!-- 讲师头像 -->            
 <el-form-item label="讲师头像">  
   <!-- 头衔缩略图 -->          
   <pan-thumb :image="teacher.avatar"/>   
    <!-- 文件上传按钮 -->         
    <el-button type="primary" icon="el-icon-upload" @click="imagecropperShow=true">更换头像          </el-button>    
    <!--v-show:是否显示上传组件:key:类似于id,如果一个页面多个图片上传控件,可以做区分:url:后台上传的url地址@close:关闭上传组件@crop-upload-success:上传成功后的回调 -->        
     <image-cropper                   
     v-show="imagecropperShow"                   
     :width="300"                   
     :height="300"                   
     :key="imagecropperKey"                   
     :url="BASE_API+'/admin/oss/file/upload'"                   
     field="file"                   
     @close="close"                   
     @crop-upload-success="cropSuccess"/>     
      </el-form-item>

前端field属性要与controller里面得multipartyFile名字一样,而且field属性会把上传得文件与格式重命名

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值