【Spring Boot 20】Spring Boot

1、配置文件application.properties


# 服务端口

server.port=8003

# 服务名

spring.application.name=service-vod



# 环境设置:dev、test、prod

spring.profiles.active=dev



#阿里云 vod

#不同的服务器,地址不同

aliyun.vod.file.keyid=LTAI4GJ2dfYZAmAusqM4qwti

aliyun.vod.file.keysecret=JwctWzF9sxACGAX7FjZ5wd8ewvjCPl



# 最大上传单个文件大小:默认1M

spring.servlet.multipart.max-file-size=1024MB

# 最大置总上传的数据大小 :默认10M

spring.servlet.multipart.max-request-size=1024MB

2、controller


package com.atguigu.vod.controller;



import com.aliyuncs.DefaultAcsClient;

import com.aliyuncs.vod.model.v20170321.DeleteVideoRequest;

import com.atguigu.commonutils.R;

import com.atguigu.commonutils.exceptionhandler.GuliException;

import com.atguigu.vod.Utils.ConstantVodUtils;

import com.atguigu.vod.Utils.InitVodCilent;

import com.atguigu.vod.service.VodService;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.web.bind.annotation.*;

import org.springframework.web.multipart.MultipartFile;



import java.util.List;



@RestController

@RequestMapping("/eduvod/video")

@CrossOrigin

public class VodController {



    @Autowired

    private VodService vodService;



    //上传视频到阿里云

    @PostMapping("uploadAlyiVideo")

    public R uploadAlyiVideo(MultipartFile file) {

        //返回上传视频id

        String videoId = vodService.uploadVideoAly(file);

        return R.Ok().data("videoId",videoId);

    }



    //根据视频id删除阿里云视频

    @DeleteMapping("removeAlyVideo/{id}")

    public R removeAlyVideo(@PathVariable String id) {

        try {

            //初始化对象

            DefaultAcsClient client = InitVodCilent.initVodClient(ConstantVodUtils.ACCESS_KEY_ID, ConstantVodUtils.ACCESS_KEY_SECRET);

            //创建删除视频request对象

            DeleteVideoRequest request = new DeleteVideoRequest();

            //向request设置视频id

            request.setVideoIds(id);

            //调用初始化对象的方法实现删除

            client.getAcsResponse(request);

            return R.Ok();

        }catch(Exception e) {

            e.printStackTrace();

            throw new GuliException(20001,"删除视频失败");

        }

    }



    //删除多个阿里云视频的方法

    //参数多个视频id  List videoIdList

    @DeleteMapping("delete-batch")

    public R deleteBatch(@RequestParam("videoIdList") List<String> videoIdList) {

        vodService.removeMoreAlyVideo(videoIdList);

        return R.Ok();

    }

} 

3、service


package com.atguigu.vod.service;



import org.springframework.web.multipart.MultipartFile;



import java.util.List;



public interface VodService {

    //上传视频到阿里云

    String uploadVideoAly(MultipartFile file);



    void removeMoreAlyVideo(List<String> videoIdList);

}

package com.atguigu.vod.service.impl;

import com.aliyun.vod.upload.impl.UploadVideoImpl;

import com.aliyun.vod.upload.req.UploadStreamRequest;

import com.aliyun.vod.upload.resp.UploadStreamResponse;

import com.aliyuncs.DefaultAcsClient;

import com.aliyuncs.vod.model.v20170321.DeleteVideoRequest;

import com.atguigu.commonutils.R;

import com.atguigu.commonutils.exceptionhandler.GuliException;

import com.atguigu.vod.Utils.ConstantVodUtils;

import com.atguigu.vod.Utils.InitVodCilent;

import com.atguigu.vod.service.VodService;

import org.apache.commons.lang3.StringUtils;

import org.springframework.stereotype.Service;

import org.springframework.web.multipart.MultipartFile;

import java.io.InputStream;

import java.util.ArrayList;

import java.util.List;

@Service

public class VodServiceImpl implements VodService {

@Override

public String uploadVideoAly(MultipartFile file) {

    try {

        //accessKeyId, accessKeySecret

        //fileName:上传文件原始名称

        // 01.03.09.mp4

        String fileName = file.getOriginalFilename();

        //title:上传之后显示名称

        String title = fileName.substring(0, fileName.lastIndexOf("."));

        //inputStream:上传文件输入流

        InputStream inputStream = file.getInputStream();

        UploadStreamRequest request = new UploadStreamRequest(ConstantVodUtils.ACCESS_KEY_ID,ConstantVodUtils.ACCESS_KEY_SECRET, title, fileName, inputStream);



        UploadVideoImpl uploader = new UploadVideoImpl();

        UploadStreamResponse response = uploader.uploadStream(request);



        String videoId = null;

        if (response.isSuccess()) {

            videoId = response.getVideoId();

        } else { //如果设置回调URL无效,不影响视频上传,可以返回VideoId同时会返回错误码。其他情况上传失败时,VideoId为空,此时需要根据返回错误码分析具体错误原因

            videoId = response.getVideoId();

        }

        return videoId;

    }catch(Exception e) {

        e.printStackTrace();

        return null;

    }

}



@Override

public void removeMoreAlyVideo(List videoIdList) {

    try {

        //初始化对象

        DefaultAcsClient client = InitVodCilent.initVodClient(ConstantVodUtils.ACCESS_KEY_ID, ConstantVodUtils.ACCESS_KEY_SECRET);

        //创建删除视频request对象

        DeleteVideoRequest request = new DeleteVideoRequest();



        //videoIdList值转换成 1,2,3

        String videoIds = StringUtils.join(videoIdList.toArray(), ",");



        //向request设置视频id

        request.setVideoIds(videoIds);

        //调用初始化对象的方法实现删除

        client.getAcsResponse(request);

    }catch(Exception e) {

        e.printStackTrace();

        throw new GuliException(20001,"删除视频失败");

    }

}

}




### 4、utils



package com.atguigu.vod.Utils;

import com.aliyun.oss.ClientException;

import com.aliyuncs.DefaultAcsClient;

import com.aliyuncs.profile.DefaultProfile;

public class InitVodCilent {

public static DefaultAcsClient initVodClient(String accessKeyId, String accessKeySecret) throws ClientException {

    String regionId = "cn-shanghai";  // 点播服务接入区域

    DefaultProfile profile = DefaultProfile.getProfile(regionId, accessKeyId, accessKeySecret);

    DefaultAcsClient client = new DefaultAcsClient(profile);

    return client;

}

}


package com.atguigu.vod.Utils;



import org.springframework.beans.factory.InitializingBean;

import org.springframework.beans.factory.annotation.Value;

import org.springframework.stereotype.Component;



@Component

public class ConstantVodUtils implements InitializingBean {



    @Value("${aliyun.vod.file.keyid}")

    private String keyid;



    @Value("${aliyun.vod.file.keysecret}")

    private String keysecret;



    public static String ACCESS_KEY_SECRET;

    public static String ACCESS_KEY_ID;



    @Override

    public void afterPropertiesSet() throws Exception {

        ACCESS_KEY_ID = keyid;

        ACCESS_KEY_SECRET = keysecret;

    }

}

```



(三)Vue前端部分

----------



### 1、template部分



```

<el-form-item label="上传视频">

    <el-upload

        :on-success=

        "handleVodUploadSuccess"

        :on-remove="handleVodRemove"

        :before-remove="beforeVodRemove"

        :on-exceed="handleUploadExceed"

        :file-list="fileList"

        :action="BASE_API+'/eduvod/video/uploadAlyiVideo'"

        :limit="1"

        class="upload-demo">

    <el-button size="small" type="primary">上传视频</el-button>

    <el-tooltip placement="right-end">

        <div slot="content">最大支持1G,<br>

            支持3GP、ASF、AVI、DAT、DV、FLV、F4V、<br>

            GIF、M2T、M4V、MJ2、MJPEG、MKV、MOV、MP4、<br>

            MPE、MPG、MPEG、MTS、OGG、QT、RM、RMVB、<br>

            SWF、TS、VOB、WMV、WEBM 等视频格式上传</div>

        <i class="el-icon-question"/>

    </el-tooltip>

    </el-upload>

</el-form-item>

```



### 2、data部分



```

data() {

    return {

        video: {

            title: '',

            sort: 0,

            free: 0,

            videoSourceId: '',

            videoOriginalName:''//视频名称

        },

        fileList: [],//上传文件列表

        BASE_API: process.env.BASE_API // 接口API地址

    }

},

```



### 3、methods部分



```

methods:{

    //点击确定调用的方法

    handleVodRemove() {

        //调用接口的删除视频的方法

        video.deleteAliyunvod(this.video.videoSourceId)

            .then(response => {

                //提示信息

                this.$message({

                    type: 'success',

                    message: '删除视频成功!'

                });

                //把文件列表清空

                this.fileList = []

                //把video视频id和视频名称值清空

                //上传视频id赋值

                this.video.videoSourceId = ''

                //上传视频名称赋值

                this.video.videoOriginalName = ''

            })

    },

    //点击×调用这个方法

    beforeVodRemove(file,fileList) {

        return this.$confirm(`确定移除 ${ file.name }?`);

    },

    //上传视频成功调用的方法

    handleVodUploadSuccess(response, file, fileList) {

        //上传视频id赋值

        this.video.videoSourceId = response.data.videoId

        //上传视频名称赋值
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值
>