2014-07-23 4 views
0

그래서 내 프로젝트에 django-queued-storages + django-storages + boto이 있고 내 PDF 파일을 S3에 업로드하고 즉시 비공개로 설정하려고합니다.django-queued-storages + boto + amazon s3이 포함 된 개인 파일

나는 결과가 없습니다 그들이있는 많은 방법 시도 :

publication_storage = QueuedStorage(
    local='django.core.files.storage.FileSystemStorage', 
    remote='storages.backends.s3boto.S3BotoStorage', 
    remote_options=dict(acl="private") 
) 

을하고는 비공개로 내 파일을 넣어하지 않았다. 아직 외부에 업로드 된 PDF가에서 액세스 가능 유지 모든 이들의

 k = boto.s3.key.Key(bucket) 
     k.key = settings.MEDIA_DIRECTORY + self.private_file 
     k.set_acl('private') 

:

는 나 또한 http://www.gyford.com/phil/writing/2012/09/26/django-s3-temporary.php에 따라이 같은 것을 시도했다.

아무도 도와 줄 수 있습니까? 어쩌면 내가 그것을 시도해 볼 수있는 완전한 예제, 나는 아직 행운이없는 구글에서 발견 한 많은 것을 시도했다.

+0

내 프로젝트에서 똑같은 코드를 사용하고 완벽하게 작동합니다. 파일 URL에'? signature = xxx'를 추가합니다. 서명은 정말 긴 문자열입니다. 누군가 서명을 알고 있으면 파일에 액세스 할 수 있습니다. 그게 당신이 얻는 것처럼 보이나요? –

+0

위의 코드는 @AshishKasturia ?? 어쨌든 나는 파일을 업로드하고 링크를 클릭 한 후에 서명을 얻습니다. 하지만 내가 서명을 제거하면 파일에 액세스 할 수 없어야하지만 나는 여전히 있습니다. 그게 옳지 않아? – psychok7

+0

두 번째 것은'k.set_acl ('private')'이다. 서명이 없으면 파일에 액세스 할 수 없다는 것이 옳습니다. 또한 S3 버킷 안의 폴더가 'Permissions' –

답변

0

당신과 앞뒤로 간 후에, 이것이 효과가있다.

동일한 버킷 아래에 mediastatic이 있으므로 버킷을 비공개로 설정하십시오. 그런 다음 S3 관리자 패널의 폴더를 마우스 오른쪽 버튼으로 클릭하고 '공개'를 클릭하여 static 폴더 만 공개합니다.

media 폴더에 관해서는, 코드의 두 번째 블록은 내가 S3에 두 개의 양동이, 업로드 한 정적에 대한 하나를 가지고 이것은 또한 나를 위해 교육했다

k = boto.s3.key.Key(bucket) 
    k.key = settings.MEDIA_DIRECTORY + self.private_file 
    k.set_acl('private') 

충분합니다. 그래서 당연히 나는이 문제에 부딪치지 않았다.

행운을 빈다.

+0

도움을 주셔서 감사합니다. – psychok7

+0

언급 한대로'media' 폴더가 S3 관리자 패널에 비공개 인 경우, 코드를 사용하여 그 안에 파일을 명시 적으로 비공개로 만들 필요가 있습니까 (예 :'k.set_acl ('private ')'? 나는 혼란스러워. – sha256