2018. 9. 14. 14:42 Back-End/Rails
Rails S3 upload
이미지 파일 S3로 올리기
(use carrierwave, fog-aws)
1. gem file
```ruby
gem 'carrierwave'
gem 'fog-aws'
```
2. Bundle install
```bash
$ bundle install
```
3. Upload 만들기
```bash
$ rails generate uploader 이름
```
4. Form 작성
```bash
<form action="/admin/quiz_upload/create" method="post" enctype="multipart/form-data">
<div class="form-group" style=" margin-top: 10pt">
<label class="control-label col-sm-1" for="image">이미지: </label>
<div class="col-sm-11">
<input type="file" name="img" id="image" accept="image/*" class="form-control">
</div>
</div>
<div>
<div class="col-sm-11">
<input type="submit"/>
</div>
</div>
</form>
```
5. Parameter 넘기기
```ruby
// 이미지 form이 있는 cotroller
def create
user_id = params[:user_id]
uploader = QuizImageUploader.new(user_id)
binding.pry
file = params[:img]
uploader.store!(file)
@url = uploader.url // S3에 올린 후 url 주소를 리턴 받는다
end
```
```ruby
// upload controller
def initialize(user_id)
@user_id = user_id
end
```
6. fog 설정
```ruby
// config/initialzers/fog-aws.rb
CarrierWave.configure do |config|
config.fog_provider = 'fog/aws' # required
config.fog_credentials = {
provider: 'AWS', # required
aws_access_key_id: 'xxx', # required
aws_secret_access_key: 'yyy', # required
region: 'ap-northeast-2', # optional, defaults to 'us-east-1'
}
config.fog_directory = '버킷이름' # required
end
```
'Back-End > Rails' 카테고리의 다른 글
Rails xml to hash (0) | 2018.09.20 |
---|---|
Rails HTTP 통신 (0) | 2018.09.19 |
Rails migrate (0) | 2018.09.18 |
Rails ORM (0) | 2018.09.18 |
Ruby 함수 (0) | 2018.09.17 |