본문 바로가기

Spring Boot

[Springboot + Vimeo] vimeo 파일 업로드 구현

반응형

1. 먼저 Vimeo 계정을 만들고 Vimeo Developer 웹 사이트에서 Vimeo API 액세스 토큰을 가져옵니다.

2. Spring Boot 프로젝트에서 다음 종속성을 pom.xml 파일에 추가합니다.

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-web</artifactId>
</dependency>

<dependency>
  <groupId>org.glassfish.jersey.core</groupId>
  <artifactId>jersey-client</artifactId>
  <version>2.26</version>
</dependency>

 

3. 파일 업로드를 처리할 컨트롤러 클래스를 만듭니다. 이 클래스에서 Jersey의 Client API를 사용하여 비디오 파일을 Vimeo에 업로드하는 방법을 정의합니다.

import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;

import javax.ws.rs.client.Client;
import javax.ws.rs.client.ClientBuilder;
import javax.ws.rs.client.Entity;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;

import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

@RestController
public class VideoController {
  
  @PostMapping("/upload")
  public void uploadVideo(@RequestParam("file") MultipartFile file) {
    try {
      // Get the file as a stream
      InputStream fileStream = file.getInputStream();
      
      // Create a Vimeo client
      Client client = ClientBuilder.newClient();
      
      // Endpoint for uploading videos to Vimeo
      String uploadEndpoint = "https://api.vimeo.com/me/videos";
      
      // Request headers
      String accessToken = "your_access_token";
      String contentType = file.getContentType();
      String contentLength = String.valueOf(file.getSize());
      
      // Make a POST request to the upload endpoint
      Response response = client
        .target(uploadEndpoint)
        .request()
        .header("Authorization", "Bearer " + accessToken)
        .header("Content-Type", contentType)
        .header("Content-Length", contentLength)
        .post(Entity.entity(fileStream, contentType));
      
      // Check the response status
      if (response.getStatus() == 201) {
        System.out.println("File uploaded successfully.");
      } else {
        System.out.println("File upload failed.");
      }
    } catch (Exception e) {
      e.printStackTrace();
    }
  }
}

4. 

반응형