2012-05-04 10 views
2

ユーザーには2種類の画像アップロード方法があります。 1つはシンプルなHTMLフォームで、もう1つはAurigmaというiPhoneアプリを通してです。 Paperclipを使用して画像を処理し、S3に保存します。 Aurigmaでアップロードされた画像は、誤ったコンテンツタイプになり、アプリケーションとして開くことになります。AurigmaのコンテンツタイプをS3にアップロードする方法を教えてください。

私は2つのソリューションを試してみました:両方のソリューションが無視されているかのように思え

before_post_process :set_content_type 

def set_content_type 
    self.image.instance_write(:content_type, MIME::Types.type_for(self.image_file_name).to_s) 
end 

before_save :set_content_type 

def set_content_type 
    self.image.instance_write(:content_type,"image/png") 
end 

とします。

Aurigmaバージョン1.3.2のpaperclipを使用しており、iPhoneからスクリーンショットをアップロードしています。

has_attached_file :image, { 
    :convert_options => { :all => '-auto-orient' }, 
    :styles => { 
    :iphone3 => "150x150", 
    :web => "300x300" 
    }, 
    :storage => :s3, 
    :bucket => ENV['S3_BUCKET'], 
    :s3_credentials => { 
     :access_key_id => ENV['S3_KEY'], 
     :secret_access_key => ENV['S3_SECRET'] 
    }, 
    :path => "/pictures/:id/:style.:extension", 
    :url => "/pictures/:id/:style.:extension"} 
} 

答えて

0

は、私はちょうどsimilar questionに答え:これは私のペーパークリップの構成です。

自分自身にコピーを実行するか、クエリ文字列で指定されたコンテンツタイプの事前署名されたURLを使用する必要があります。

Rubyとurl_for用AWS SDKを使用して:私の知る限り、あなたが(Aurigmaアップ経由)独自のサーバーにクライアントデバイスからすべてのファイルをアップロードする最初の理解と

object = bucket.objects.myobject 
url = object.url_for(:read, :response_content_type => "image/png") 
+0

ありがとうございますが、これを実装する方法がわかりません。 Paperclipの設定を私の質問に追加しました。 PaperclipはS3とのやりとりを処理するので、バケットにアクセスしてオブジェクトを見つけることはできません。 S3宝石を使ってバケツに直接アクセスし、何らかの形で画像を取得してコンテンツタイプを変更することをお勧めしますか? –

+0

@SjorsProvoost - 私はルビーの開発者ではないので、空白を埋める必要がある... AurigmaやPaperclipを使用してファイルをアップロードするときは、content-typeを設定すると、これを設定するオプションがあります。 Paperclipは拡張機能に基づいて設定しているようですが、必要に応じてこれを上書きすることができます:http://stackoverflow.com/questions/2581157/overriding-content-type-for-rails-paperclip-pluginそれ以外の場合は、AWS SDKを直接使用してS3内のファイルを(自分自身に)コピーし、正しい 'content-type'を設定します。 –

+0

またはASW SDKを使用して、サイトで使用するURLを生成し、URLに 'content-type'を設定します。これは、S3で設定されているものを変更するのではなく、異なる 'content-type'でファイルを提供するだけです。私はPaperclipがおそらくあなたのためにこれをするオプションを持っていると思う... ...私はより具体的にはできません申し訳ありません。 –

0

、その後、これらのファイルがにアップロードされていますAmazon S3。クライアントデバイスのコンテンツタイプを変更しようとして同様の問題があります。これは不可能です。サーバーにファイルを送信してから、ファイルをS3にアップロードする前にコンテンツタイプを変更する必要があります。

関連する問題