2012-02-06 2 views
2

나는이 웹 애플리케이션으로 그들을 액세스보관 용 API의 작업은, 지금 carrierwave

등 등을 처리 할 수 ​​있도록 클라우드에 이미지를 동기화 드롭 박스를 사용하는 아이 패드 응용 프로그램이 아마존 S3에 이미지를 복사하려고 내가 문제가있는 부분은 파일을 dropbox에서 carrierwave를 통해 s3으로 가져 오는 것입니다. 나는 사진 모델을 가지고 새로운 사진을 만들고 업로드하고 이미지를 성공적으로 만들 수 있습니다. Dropbox에 파일을 저장할 수도 있습니다. 그러나 내가 dropbox에서 파일을 가져 와서 s3에 넣으려고하면 파일의 내용은 텍스트 일뿐입니다.

설정해야 할 일종의 MIME 형식이 있습니까?

나는 dropbox_sdkget_file_and_metadata 방법을 사용하고 있습니다. 나에게 파일 객체를 성공적으로 반환하지만 내용은 모두 텍스트입니다. 이 날 열심히 만들 때 말씀이 이미지 @db_image을 해당 파일을 사용하여 내가 할 방법을 모르는

dbsession = DropboxSession.deserialize(session[:dropbox_session]) 
@client = DropboxClient.new(dbsession, ACCESS_TYPE) #raise an exception if session not authorized 
@info = @client.account_info # look up account information 
@photo = Photo.new(params[:photo]) 
@db_image metadata = @client.get_file_and_metadata('/IMG_1575.jpg') 

부분 .. 그래서 난이 존재 확신 할 수 있습니다 이미지 파일을 코딩하는 새로운 photo 및 S3에 저장하십시오.

'mime type'문제 일 수 있다고 생각하지만이 파일은 ext에만 기반합니다.

여러분이 공유 할 수있는 통찰력이 있으면이 장애물을 지나치는 데 정말로 도움이됩니다. 감사!

+0

이 질문에 실제로 대답하지 않지만 get_file_and_metadata는 두 가지를 반환합니다. 메타 데이터가 아닌 이미지 파일 만 원한다면 "@db_image, metadata = @ client.get_file_and_metadata ('/ IMG_1575.jpg')" – Chris

+0

도 시도해 보았습니다. 같은 문제를 일으키는 다른 방법 일뿐입니다. 데이터를 얻을 수는 있지만 모두 텍스트 일뿐입니다. 그래도 대답 주셔서 감사합니다. 나는 그것을 반영하기 위해 게시물을 편집했다. – afxjzs

답변

1

알아 냈습니다. 대신 carrierwave 보석과 함께 사용되는 dropbox-api 보석의 일부인 direct_url.url 방법을 사용했습니다. direct_url.url 메서드는 반송파에 대한 remote_url 값으로 사용할 수있는 해당 파일에 대한 안전한 전체 URL 경로를 반환합니다.

@client = Dropbox::API::Client.new(:token => 'derp', :secret => 'derp') 
@dropbox_files = @client.ls "images/#{@event.keyword}/#{photo_size}/" 

@dropbox_files.each do |f| 
    photo_exists = Photo.where(:dropbox_path => f.direct_url.url).count 
    if photo_exists == 0 
    @photo = Photo.create(:remote_filename_url => f.direct_url.url, 
          :dropbox_path => f.direct_url.url, 
          :event_id => @event.id) 
    end 
end 

지금, 나는 루비에서 아주 새로운 해요, 그래서 매우 느리고 투박 보인다 나는, 결과를 탐색 할 수있는 더 좋은 방법을 게시 할 수 있습니다.