ラベル S3 の投稿を表示しています。 すべての投稿を表示
ラベル S3 の投稿を表示しています。 すべての投稿を表示

2017年2月13日月曜日

carrierwaveで画像のwidthとheightを取る

carrierwaveで画像をS3にアップロードするのですが、
一定のwidthとheightより小さいものはアップロードしないように
validateではじきたいなということでwidthとheightを取得する方法を調べました。

やり方としては、modelにwidthとheightの値を格納する変数を用意して、
uploaderでwidthとheightに格納する処理を記述すればよいようです。
保存をする前にwidthとheightを取ることができるので、
自分で比較してはじいたり、validateではじいたりどちらもできます。
class Image < ActiveRecord::Base
  mount_uploader :image, ImageUploader

  attr_accessor :width, :height
end

class ImageUploader < CarrierWave::Uploader::Base
  process :store_dimensions

  def store_dimensions
    if file && model
      model.width, model.height = `identify -format "%wx%h" #{file.path}`.split(/x/)
    end
  end
end

参考URL
https://github.com/carrierwaveuploader/carrierwave/wiki/How-to:-Get-image-dimensions

2015年9月21日月曜日

rubyのaws-sdkでamazonS3のaclを変更する

ユーザーの権限によって画像の公開範囲を制限する必要が出てきたので、
amazon S3のaclを動的に変えるコードを書きました。

s3 = AWS::S3.new
bucket_name = "xxx"
bucket = s3.buckets[bucket_name]
user.user_photos.each do |photo|
  o = bucket.objects[photo.url.path]
  if user.publicly?
    o.acl = :public_read
  else
    o.acl = :private
  end
end

photo.url.pathにはbucket_name以降の/からファイル名までのパスが入ります。

http://akasata.com/articles/292
http://qiita.com/ryo0301/items/791c0a666feeea0a704c
https://github.com/thoughtbot/paperclip/issues/1416

2015年7月6日月曜日

AWSのS3で静的ウェブサイトホスティングするときのバケットポリシー

AWSのS3で静的ウェブサイトホスティングでjsやcssを配信したいと思い、
どこのサイトからでもアクセスされてかまわない形でアクセスを許可したときの
バケットポリシーについて調べました。
AWSのドキュメントにもあるように、以下の記述でうまくいきました。
{
 "Version": "2012-10-17",
 "Statement": [
  {
   "Sid": "PublicReadGetObject",
   "Effect": "Allow",
   "Principal": "*",
   "Action": "s3:GetObject",
   "Resource": "arn:aws:s3:::バケット名/*"
  }
 ]
}

参考URL
https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/dev/WebsiteAccessPermissionsReqd.html