2017-03-18 2 views
1

This article은 양식을 사용하여 Amazon S3 또는 minio에 파일을 업로드하는 방법을 보여줍니다. 가장 안전한 것으로 보이는 사전 서명 된 POST URL 정책 방법을 사용하고 싶습니다.자바 스크립트를 사용하여 브라우저에서 Minio 또는 S3로 미리 서명 된 POST URL로 파일을 업로드하는 방법

그러나 브라우저를 사용하여 프로그래밍 방식으로 minio 또는 S3에 파일을 업로드하고 싶습니다. 즉, 양식이 아닌 자바 스크립트를 사용하고 싶습니다.

나는 노드 사용자이고 .field().attach() 작업을 사용하여 양식 필드를 설정하고 파일을 업로드하는 데 매우 사용하기 쉬운 superagent에 익숙합니다.

노드에서 작동 :

let cdnAgent = superagent; 
    let req = cdnAgent.post(r.data.pictureSet.uploadLink); 
    _.each(uploadForm, function(value, key) { 
    req.field(key, value); 
    }); 
    // upload file via the created signed policy 
    return req 
    .set('Content-Type', 'application/octet-stream') 
    .attach('file', 'test/data/test.jpg'); 
}).then(r => { 

그러나,이 브라우저에서 작동하지 않습니다, .attach()은 지원되지 않습니다, 나는 그 주위에 일할 때, 나는 별도의 내 자바 스크립트 도메인 때문에 CORS 문제에 달렸다 내 미니 오 또는 S3 도메인의 도메인.

이 질문에 답하기 위해 도메인 전체에서 작동하는 XMLHttpRequest, Axios, superagent 또는 Fetch를 사용하는 완전한 예제를보고 싶습니다.

이 질문과 답변에 비슷한 질문이 있지만 모두 구형 인 것으로 나타 났으며 기술이 이전되었습니다. 그래서 저는 이것이 중복 질문이라고 생각하지 않습니다.

+1

버킷지지 [사용자 CORS 응답 (http://docs.aws.amazon.com/AmazonS3/latest/dev/cors. html), 문제의 해당 부분을 해결할 수 있어야합니다. –

+0

CORS는 기본적으로 minio에서 켜져 있으며 이는 내가 테스트 한 것입니다. 아마존 CORS 링크를 이용해 주셔서 감사합니다. –

+0

미안 해요, 나는 뇌에 S3를 가지고 있었고 minio의 여러 언급을 완전히 광택 냈습니다. –

답변

1

https://github.com/harshavardhana/minio-js-browser-upload/ 당신은 단순히이 REPO를 복제 한 후 http://localhost:8080

node presign-post-server.js 

방문 브라우저를 실행할 수 있습니다. 업로드 파일을 클릭하고 선택한 파일을 업로드하면 사전 설정된 사후 정책 스타일을 통해 업로드됩니다. [1]

현재 예제는 https://play.minio.io:9000uploads 버킷을 가리 킵니다. [2]

[1] https://github.com/harshavardhana/minio-js-browser-upload/blob/master/index-post.html

[2] https://github.com/harshavardhana/minio-js-browser-upload/blob/master/presign-post-server.js

+0

실례, 사랑 해요!. 이제 이미지를 docker 이미지로 묶으십시오 :-). 그러나 진지하게 고마워, 이것은 표준 XMLHttpRequest 예제이다. OP의 의견에 SuperAgent 대답. 이제 누군가 Axios의 답변을 올리면 다음 멍청한 놈이 더 나을 것입니다. –