0

Rails 3、Paperclip(3.3.0)、aws-sdk(1.7.1)を使用しています。

私のペーパークリップの添付ファイルはS3に安全に保管されています。

attachment.rb

  has_attached_file :attachment,
    :storage => :s3,
    :s3_credentials => "#{Rails.root}/config/s3.yml",
    :s3_protocol => 'https',
    :s3_permissions => :private,  # Sets the file, not the folder as private in S3
    :use_timestamp => false,
    :default_style => :original, # NEEDS to be original or download_url method below wont work
    :default_url => '/images/:attachment/default_:style.png',
    :path => "/:rails_env/private/s/:s_id/uuploaded_files/:basename.:extension"

ファイルをダウンロードするために、次のような安全なURLを生成します。

  def authenticated_url(style = nil, expires_in = 1.hour)
    mime_type = MIME::Types.type_for(self.attachment_file_name)[0]
    attachment.s3_object(style).url_for(:read, :secure => true, :response_content_type => mime_type.to_s, :expires => expires_in).to_s
  end

問題はPSDの場合です:これは空になります:

Rails MIME::Types.type_for('photoshop_1354320001.psd')

コードでは、次のようになります。

mime_type = MIME::Types.type_for(self.attachment_file_name)[0]

他のファイルでは問題なく機能しますが、PSDでは機能しません。なぜ、どのように解決するのか、何か考えはありますか?

ありがとう

4

1 に答える 1

3

もちろん。MIME :: Typesを使用すると、カスタムタイプを指定できます。

これを初期化子に貼り付けます

# Not quite sure what the appropriate MIMEtype for PSDs are,
# but this is the gist of it.
# .PSB is a larger version of .PSD supporting up to 300000x300000 px
psd_mime_type = MIME::Type.new('image/x-photoshop') do |t|
    t.extensions  = %w(psd psb)
    t.encoding    = '8bit'
end

MIME::Types.add psd_mime_type

MIME::Types.type_for "test.psd"あなたに与える必要があります"image/x-photoshop"

于 2012-12-01T02:43:58.250 に答える