小节上传视频功能(后端)

1、创建新模块service_vod

2、在service_vod的Pom文件中引入依赖

(1)确认父工程guli_parent引入依赖的版本

(2)在service_vod的Pom文件中引入依赖

java 复制代码
<dependencies>
    <dependency>
        <groupId>com.aliyun</groupId>
        <artifactId>aliyun-java-sdk-core</artifactId>
    </dependency>
    <dependency>
        <groupId>com.aliyun.oss</groupId>
        <artifactId>aliyun-sdk-oss</artifactId>
    </dependency>
    <dependency>
        <groupId>com.aliyun</groupId>
        <artifactId>aliyun-java-sdk-vod</artifactId>
    </dependency>
    <dependency>
        <groupId>com.aliyun</groupId>
        <artifactId>aliyun-sdk-vod-upload</artifactId>
    </dependency>
    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>fastjson</artifactId>
    </dependency>
    <dependency>
        <groupId>org.json</groupId>
        <artifactId>json</artifactId>
    </dependency>
    <dependency>
        <groupId>com.google.code.gson</groupId>
        <artifactId>gson</artifactId>
    </dependency>
    <dependency>
        <groupId>joda-time</groupId>
        <artifactId>joda-time</artifactId>
    </dependency>
</dependencies>

3、创建配置文件application.properties

java 复制代码
# 服务端口
server.port=8003
# 服务名
spring.application.name=service-vod

# 环境设置:dev、test、prod
spring.profiles.active=dev

4、在对应目录下,创建启动类

java 复制代码
package com.atguigu.vodservice;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.openfeign.EnableFeignClients;
import org.springframework.context.annotation.ComponentScan;

@EnableFeignClients
@EnableDiscoveryClient
@SpringBootApplication(exclude = DataSourceAutoConfiguration.class)
@ComponentScan(basePackages={"com.atguigu"})
//@MapperScan("com.atguigu")
public class VodApplication {
    public static void main(String[] args) {
        SpringApplication.run(VodApplication.class, args);
    }
}
java 复制代码
5、在com/atguigu/vodservice/utils包下创建工具类
java 复制代码
public class AliyunVodSDKUtils {
    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;
    }
}

6、创建VideoAdminController,并添加上传视频的方法

java 复制代码
@Api(description="视频管理")
@RestController
@RequestMapping("/eduvod/video")
@CrossOrigin
public class VideoAdminController {
    @ApiOperation(value = "上传视频")
    @PostMapping("uploadVideo")
    public R uploadVideo(MultipartFile file){
        try {
            //1上传文件名
            String filename = file.getOriginalFilename();
            //2阿里云显示的名称
            String title = filename.substring(0,filename.lastIndexOf("."));
            //3获取文件流
            InputStream inputStream = file.getInputStream();
            //4创建请求
            UploadStreamRequest request = new UploadStreamRequest(
                    "LTAI3buexRAagkdy", "A6hpWJbF3Zz6wj3jxuBe40Mwryt1Zz",
                    title,filename,inputStream);
            //5创建对象,提交请求,获得响应
            UploadVideoImpl uploadVideo = new UploadVideoImpl();
            UploadStreamResponse response = uploadVideo.uploadStream(request);
            //6从响应中获取视频id
            String videoId ="";
            if(response.isSuccess()){
                videoId =response.getVideoId();
            }else{
                videoId =response.getVideoId();
            }
            return R.ok().data("videoId",videoId);
        } catch (IOException e) {
            throw new GuliException(20001,"上传失败");
        }
    }
}

7、测试

(1)出现问题

java 复制代码
Maximum upload size exceeded; nested exception is java.lang.IllegalStateException: org.apache.tomcat.util.http

(2)定位问题

上传文件大小有限制,tomcat有限制。

(3)解决问题

java 复制代码
# 最大上传单个文件大小:默认1M
spring.servlet.multipart.max-file-size=1024MB
# 最大置总上传的数据大小 :默认10M
spring.servlet.multipart.max-request-size=1024MB

(4)再次测试

相关推荐
星乐a1 分钟前
String 不可变性与常量池深度解析
java·开发语言
captain3761 分钟前
ACM模式下Java输入输出函数为什么会超时?及解决方法
java·开发语言
程序员老邢7 分钟前
【产品底稿 04】商助慧 V1.1 里程碑:爬虫入库 + MySQL + Milvus 全链路打通
java·爬虫·mysql·ai·springboot·milvus
2601_950703949 分钟前
Java安全编程与静态分析实战
java
好家伙VCC10 分钟前
**发散创新:基于Python与OpenCV的视频流帧级分析实战**在当前人工智能与计算机视觉飞速发展的背景下
java·人工智能·python·计算机视觉
SimonKing11 分钟前
大V说’AI替代不了你’,但现实是——用AI的人正在替代你
java·后端·程序员
IT_陈寒12 分钟前
SpringBoot里的这个坑差点让我加班到天亮
前端·人工智能·后端
一叶龙洲27 分钟前
Java中使用模板引擎(FreeMarker / Velocity) + Word XML导出复杂Word
xml·java·word
Halo_tjn33 分钟前
Java 接口的定义重构学生管理系统
java·开发语言·算法
Albert Edison40 分钟前
【RabbitMQ】快速入门
java·分布式·rabbitmq