[SPRING] 컬링 경로를 통해 Amazon S3에 업로드
SPRING컬링 경로를 통해 Amazon S3에 업로드
스프링 부트를 통해 파일 업로드 REST API를 설정하려고합니다.
나는 현재 버킷에 존재하는 객체들의리스트를 반환하는 list / GET method curl http : // localhost : 8080 / api / aws / s3 / list를 가지고있다.
업로드의 경우 다음과 같이 시도했습니다.
curl -F "data=@test.txt" http://localhost:8080/api/aws/s3/upload -i
어떤 생산 :
HTTP/1.1 100 Continue
HTTP/1.1 200 OK
Date: Sun, 25 Jun 2017 23:28:36 GMT
X-Application-Context: application
Content-Type: application/json;charset=utf-8
Transfer-Encoding: chunked
그러나 버킷을 보면 새 파일로 업데이트되지 않았습니다.
이것이 AWS의 사용 권한 문제일까요? 내 계정에만 읽기 및 쓰기 권한이 있습니다. 내가 만든 사용자와 그룹에는 관리자 권한이 있습니다. 버킷 정책을 추가하지 않았습니다. 이것은 CORS 구성입니다.
<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
<AllowedOrigin>*</AllowedOrigin>
<AllowedMethod>GET</AllowedMethod>
<AllowedMethod>POST</AllowedMethod>
<AllowedMethod>DELETE</AllowedMethod>
<MaxAgeSeconds>3000</MaxAgeSeconds>
<AllowedHeader>Authorization</AllowedHeader>
</CORSRule>
</CORSConfiguration>
봄에 S3 컨트롤러의 업로드 섹션은 다음과 같습니다.
@RequestMapping(value = "/upload", method = RequestMethod.POST)
public List<PutObjectResult> upload(@RequestParam("file") MultipartFile[] multipartFiles) {
return s3Wrapper.upload(multipartFiles);
}
해결법
-
==============================
1.S3 용 버켓 이름과 일부 매개 변수를 지정해야합니다. 그리고 POST가 아니라 PUT이라고 생각합니다. 인터넷에 몇 가지 명령 줄 샘플이 있습니다.
S3 용 버켓 이름과 일부 매개 변수를 지정해야합니다. 그리고 POST가 아니라 PUT이라고 생각합니다. 인터넷에 몇 가지 명령 줄 샘플이 있습니다.
file=/path/to/file/to/upload.tar.gz bucket=your-bucket resource="/${bucket}/${file}" contentType="application/x-compressed-tar" dateValue=`date -R` stringToSign="PUT\n\n${contentType}\n${dateValue}\n${resource}" s3Key=xxxxxxxxxxxxxxxxxxxx s3Secret=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx signature=`echo -en ${stringToSign} | openssl sha1 -hmac ${s3Secret} -binary | base64` curl -X PUT -T "${file}" \ -H "Host: ${bucket}.s3.amazonaws.com" \ -H "Date: ${dateValue}" \ -H "Content-Type: ${contentType}" \ -H "Authorization: AWS ${s3Key}:${signature}" \ https://${bucket}.s3.amazonaws.com/${file}
-
==============================
2.내 컨트롤러에서 설정 한 매개 변수가 파일 이었지만 내 컬 경로에서 데이터를 계속 사용했기 때문입니다.
내 컨트롤러에서 설정 한 매개 변수가 파일 이었지만 내 컬 경로에서 데이터를 계속 사용했기 때문입니다.
from https://stackoverflow.com/questions/44751574/uploading-to-amazon-s3-via-curl-route by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] PersistentEntityResourceAssembler를 사용하는 사용자 지정 RepositoryRestController 테스트 (0) | 2019.04.28 |
---|---|
[SPRING] Spring이 속성 파일에서 삽입 될 때 SpEL 표현식의 모든 문자 / 표현식을 평가할 수 있습니까? (0) | 2019.04.28 |
[SPRING] 최대 절전 모드와 @ 트랜잭션을위한 스프링 데이터 소스 설정하기 (0) | 2019.04.28 |
[SPRING] Vaadin / Spring 애플리케이션에서 정적 리소스를 제공하는 방법은 무엇입니까? (0) | 2019.04.28 |
[SPRING] Spring 부팅시 CORS를 Spring 보안 레벨에서 사용하는 방법 [닫기] (0) | 2019.04.28 |