Elementui实现照片上传到阿里云OSS服务器上

Elementui实现照片上传到阿里云OSS服务器上

一、准备工作

  1. 首先在阿里云上注册账户并开通oss服务,开通完如下图GjvwdS.png
  2. 点击图片左上角,Bucket管理处,创建Bucket,默认就可以。记住所创建的bucket的名字
  3. 获取Access Key,点击图片上方红色框处,按序操作就可以,会看见如下图:83yxmj.jpg
  4. 要记住红色框柱的两个值,要用这个来应用oss服务
  5. 阿里云官方文档

二、开始工作

  1. springboot项目,springboot项目的搭建,我就不写了
  2. 引入阿里云OSS依赖
		<dependency>
            <groupId>com.aliyun.oss</groupId>
            <artifactId>aliyun-sdk-oss</artifactId>
            <version>3.8.0</version>
        </dependency>
  1. 开始编写代码
    • 首先我编写了一个阿里云类,来存放阿里云基础数据
public class ALiYun {
   /*Endpoint 是区域地址,地域节点*/
   public  String ENDPOINT = "http://oss-cn-beijing.aliyuncs.com";
   /*阿里云主账号AccessKeyid 拥有所有API的访问权限, 是访问阿里云的秘钥,*/
   public  String ACCESSKEYID = "LTAI4FfT6pPcw88P89JCxP6g";
   /*阿里云主账号AccessKeysecret 拥有所有API的访问权限 是访问阿里云的秘钥,*/
   public  String ACCESSKEYSECRET = "mUQRBGCqqmgQfyRSOWnwMJqxna557M";
   /*你创建的 bucket 名称*/
   public  String BUCKETNAME = "whqaly";
   /*先建立的一个文件夹名称,也可以说是相册名称*/
   public  String KEY = "images/";

   public String getENDPOINT(){
       return  ENDPOINT;
   }
   public String getACCESSKEYID(){
       return ACCESSKEYID;
   }
   public String getACCESSKEYSECRET(){
       return ACCESSKEYSECRET;
   }
   public  String getKEY(){
       return KEY;
   }
   public String getBUCKETNAME(){
       return BUCKETNAME;
   }
}
  • 地域节点哪里找?Gjz6bV.png
  • ok,接下来,可以直接编写 controller 了,不需要service。
@RestController    /* 使返回的数据转为 json 格式的数据 */
@RequestMapping("/imgg")
public class ImgController {
    @RequestMapping("/uploadImg")
    public Map<String,String> uploadImg(MultipartFile file) {
        ALiYun aly = new ALiYun();
        Map<String,String> outmap = new HashMap<>();
        String flag = "false";
        if (file != null){
            String imgname = file.getOriginalFilename();    /*此时获得的是该照片上传时的名字,如:1234.jpg或 345.png或。。。*/
            System.out.println(imgname);
            try{
                /*获取上传目前时间*/
                SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd"); //设置日期格式
                String dote = df.format(new Date());    // 目前时间

                // 生成新的文件名 (取图片名称+当前上传时间)
                String newFileName = imgname +"-"+ dote;
                System.out.println(newFileName);

                InputStream input = file.getInputStream();
                /*InputStream input = new URL("https://www.aliyun.com/").openStream();*/

                // 初始化阿里云oss链接,上传图片到服务器
                OSS ossClient = new OSSClientBuilder().build(aly.getENDPOINT(), aly.getACCESSKEYID(), aly.getACCESSKEYSECRET() );
                // 上传文件流
                ossClient.putObject(aly.getBUCKETNAME(),aly.getKEY() + newFileName,input);

                // 关闭OSSClient。
                ossClient.shutdown();

                flag = "true";
            }catch (IOException e){
                System.out.println("OMG,我捕捉到你了!");
            }finally {
                outmap.put("resultFlag",flag);
            }

        }
        return outmap;
    }
}
  1. 前端使用elementui,很方便,注意: action 的值是后端服务器的路径
		<el-upload
             class="upload-demo"
             action="http://127.0.0.1:8080/newweb/imgg/uploadImg"
             :on-preview="handlePreview"
             :on-remove="handleRemove"
             :file-list="fileList"
             list-type="picture"

             accept=".jpg,.png"
             >
       <i class="el-icon-upload" style="padding-top: 20px"><br><span style="font-size: 20px">上传图片</span></i>
      <!-- <el-button size="small" type="primary">点击上传</el-button>-->
       <div slot="tip" class="el-upload__tip">只能上传jpg/png文件,且不超过500kb</div>
     </el-upload>
  1. 到此大工告成!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值