클립 영상 업로드 URL 발행 API를 통해 받은 uploadUrl로 제공하는 예시코드를 참고하여 업로드를 수행하면 됩니다.
주의 : 클립 영상 업로드 URL 발행 API에 요청값으로 전달 한 fileSize와 업로드 하고자 한 파일 사이즈와 반드시 일치하여야 합니다.
- 예시코드
curl -X PUT \
-H "Content-Type: video/mp4" \
--data-binary "@/Users/test/videos/original.mp4" \
"https://s3.ap-northeast-2.amazonaws.com/mobidoo-media-prod/partners/partnerUniqueId/clips/123/original.mp4?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ASIAXXXXX%2F20250124%2Fap-northeast-2%2Fs3%2Faws4_request&X-Amz-Date=20250124T023014Z&X-Amz-Expires=900&X-Amz-SignedHeaders=host&X-Amz-Signature=0f6e9a7d0e2f7c1d0b4b3d5f0b2c9e4d8a1f7a2e6b3c9d4e1a0b5c7d9e2f3a4b"
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.nio.file.Path;
public class PresignedPutUpload {
public static void main(String[] args) throws Exception {
String url = "PRESIGNED_URL_HERE";
Path file = Path.of("/Users/test/videos/original.mp4");
HttpClient client = HttpClient.newHttpClient();
HttpRequest req = HttpRequest.newBuilder()
.uri(URI.create(url))
.header("Content-Type", "video/mp4") // presign에 묶였으면 동일
.PUT(HttpRequest.BodyPublishers.ofFile(file))
.build();
HttpResponse<String> res = client.send(req, HttpResponse.BodyHandlers.ofString());
if (res.statusCode() / 100 != 2) {
throw new RuntimeException("Upload failed: " + res.statusCode() + " " + res.body());
}
System.out.println("Upload success");
}
}
import requests
url = "PRESIGNED_URL_HERE"
file_path = "/Users/test/videos/original.mp4"
with open(file_path, "rb") as f:
r = requests.put(
url,
data=f,
headers={"Content-Type": "video/mp4"}, # presign에 묶였으면 동일
)
if r.status_code // 100 != 2:
raise Exception(f"Upload failed: {r.status_code} {r.text}")
print("Upload success")
import fs from "fs";
const url = "PRESIGNED_URL_HERE";
const filePath = "/Users/test/videos/original.mp4";
const stream = fs.createReadStream(filePath);
const res = await fetch(url, {
method: "PUT",
headers: {
"Content-Type": "video/mp4", // presign에 content-type이 묶여있다면 반드시 동일
},
body: stream,
});
if (!res.ok) {
const text = await res.text().catch(() => "");
throw new Error(`Upload failed: ${res.status} ${text}`);
}
console.log("Upload success");