2013-02-02 4 views
2

내 레일 어플리케이션에 ckeditor 또는 redactor를 사용하고 싶습니다. ckeditorredactor-rails 모두 이미 Carrierwave와 잘 통합되어 있지만 응용 프로그램 내부의 기본 폴더 대신 Amazon S3로 업로드 폴더를 편집하는 방법을 알고 싶습니다.레일즈] Amazon S3에 업로드하는 리치 텍스트 에디터

실제로 Redactor javascript 버전 (this)은 javascript로이를 수행하는 방법을 제공하지만 Carrierwave 및 Fog를 사용하여 내 레일 앱을 통해이를 수행하고 싶습니다. 그것은 나에게 자연스러운 것처럼 보이지만, 자바 스크립트를 사용하거나 캐리어 웨이브 (Carrierwave) 및 포그 (Fog)를 사용하여 이익을 얻는 데 아무런 해가 없다면 알려주십시오.

아직까지이 문제에 대한 해결책을 찾지 못했기 때문에 서식있는 텍스트 편집기를 통합하지 않아 일반 텍스트를 사용하고 게시물 당 하나의 그림을 업로드하게했습니다. 그러나 멋진 텍스트 편집기는 이제 필수 항목이되었습니다.

이 문제에 대한 문서를 찾을 수 없으며 유사한 문제에 직면 한 많은 사람들이있을 것입니다.

반송파 및 안개를 사용하여 Amazon S3에 사진을 업로드하는 ckeditor 및 redactor 설정을 수정하는 방법을 알고있는 사람은 답변을 남겨 두십시오. 대단히 감사하겠습니다.

+0

S3로 업로드하기 위해'carrierwave' 설정을 변경해야한다고 생각합니다. 'redactor-rails' 보석에 사용되는 업 로더의 이름이 무엇인지 분명히 밝혀야합니다. –

답변

3

비공개 키가 노출되지 않으므로 자바 스크립트 측에 설정을 적용해도 아무런 해가되지 않습니다. 그러면 노출하지 않아야합니다.

다음 코드 (서버에 있음)를 사용하여 서명과 정책을 생성합니다.

policy_json='{"expiration": "2020-01-01T00:00:00Z", 

    "conditions": [ 
    {"bucket": "bucket name"}, 
    ["starts-with", "$key", ""], 
    {"acl": "public-read"}, 
    {"success_action_redirect": "redirect url"}, 
    ["starts-with", "$Content-Type", ""], 
    ["content-length-range", 0, 1048576] 
    ] 
}' 
policy=Base64.encode64(policy_json).gsub("\n","") 
signature = Base64.encode64(OpenSSL::HMAC.digest(OpenSSL::Digest::Digest.new('sha1'), 'Your private key', policy)).gsub("\n","") 

그래서 개인 키는 서버 측에 저장되고 지금은이 값 (정책 및 서명)을 얻을보기에 그것을 넣어 아약스 전화를 걸 수 있습니다.

이제 버킷 정책에서 AllowedOrigin을 www.yourwebsite.com으로 지정할 수 있습니다.

이렇게하면 웹 사이트에서만 콘텐츠를 버킷에 게시 할 수 있으므로 악의적 인 사용자가 내 계정에 콘텐츠를 게시 할 수 없습니다.