質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
AWS Lambda

AWS Lambdaは、クラウド上でアプリを実行できるコンピューティングサービス。サーバーのプロビジョニングや管理を要せず複数のイベントに対してコードを実行します。カスタムロジック用いた他AWSサービスの拡張やAWSの規模やパフォーマンスを用いたバックエンドサービスを作成できます。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Amazon S3

Amazon S3 (Simple Storage Service)とはアマゾン・ウェブ・サービスが提供するオンラインストレージサービスです。

Q&A

0回答

640閲覧

Rails AWS S3 iphoneでファイルをアップロードする際にpdfファイルが0Bになってしまう

lyzmfeqpxs54

総合スコア237

AWS Lambda

AWS Lambdaは、クラウド上でアプリを実行できるコンピューティングサービス。サーバーのプロビジョニングや管理を要せず複数のイベントに対してコードを実行します。カスタムロジック用いた他AWSサービスの拡張やAWSの規模やパフォーマンスを用いたバックエンドサービスを作成できます。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Amazon S3

Amazon S3 (Simple Storage Service)とはアマゾン・ウェブ・サービスが提供するオンラインストレージサービスです。

0グッド

0クリップ

投稿2020/04/16 06:43

編集2020/04/16 09:42

いつもお世話になっております。
現在Ralisでwebページを作成しております。

AWS上でRails + Nginxでシステム運用しており、ファイルのアップロードはCarrierwave、アップロード先はAWSのS3を用いております。
データベースはRDSを使用しています。

以下のように、input fileに画像、動画、pdfをそれぞれ入力し、S3上にアップロードするというシンプルな仕組みを作っております。

アップロード後のS3の中を見てみると、画像、動画は問題なくアップロードされるのですが、「pdfファイルのみ」0Bとなり、ファイルも開けない状態となることがあります。

この現象は現状、確認している範囲では「iphoneのsafariブラウザのみ」で起こっております。

原因は分からないのですが、input fileでファイルを選択後一定時間(5分程度?)経った後にsubmitすると起こる可能性が高いように思えます。

input fileでファイルを選択後、時間をほとんど置かずにsubmitすれば起こりません。
windowsのchromeや、Macのsafariではこの現象は確認できませんでした。

どういった原因が考えられますでしょうか。
参考になるサイトでも構いませんので、適切な方法をご教示いただけますと幸いです。
よろしくお願いいたします。

環境
Amazon Linux release 2 (Karoo)
Rails 5.2.3
Ruby version: 2.6.1
RDS
ELB
S3

ruby

1# show.html.erb 2<%= form_with(model: @user_info, url: "/entry", local: true, html: {id: 'xx', class: 'yy'}) do |f| %> 3 # 4 # 省略 5 # 6 <%= f.file_field :movie, class: 'movie_file' %> 7 <%= f.file_field :image, class: 'image_file' %> 8 <%= f.file_field :pdf, class: 'pdf_file' %> 9 # 10 # 省略 11 # 12<% end %> 13 14

ruby

1 2# model/user.rb 3class User < ApplicationRecord 4 5 mount_uploader :movie, ImageUploader 6 mount_uploader :image, ImageUploader 7 mount_uploader :pdf, ImageUploader 8 9end 10

ruby

1 # uploaders./mage_uploader.rb 2 class ImageUploader < CarrierWave::Uploader::Base 3 # Include RMagick or MiniMagick support: 4 # include CarrierWave::RMagick 5 include CarrierWave::MiniMagick 6 7 # Choose what kind of storage to use for this uploader: 8 # storage :file 9 storage :fog 10 11 # Override the directory where uploaded files will be stored. 12 # This is a sensible default for uploaders that are meant to be mounted: 13 def store_dir 14 # "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}" 15 "uploads" 16 end 17 18 # 画像の場合のみ処理 19 process :fix_exif_rotation, if: :is_thumb? 20 21 def fix_exif_rotation 22 manipulate! do |img| 23 img.auto_orient 24 img = yield(img) if block_given? 25 img 26 end 27 end 28 29 def extension_whitelist 30 %w(jpg jpeg png mp4 mov pdf) 31 end 32 33 def filename 34 if original_filename.present? 35 base = File.basename(original_filename, '.*') 36 ext = File.extname(original_filename).downcase 37 base.gsub!(".","_") 38 end 39 # binding.pry 40 if mounted_as == :logo 41 type_name = 'logo' 42 elsif mounted_as == :movie 43 type_name = 'movie' 44 elsif mounted_as == :company_profile 45 type_name = 'pdf' 46 end 47 # binding.pry 48 "#{model.id}_#{Time.zone.now.strftime('%Y%m%d')}_#{type_name}#{ext}" if original_filename.present? 49 end 50 51 def is_thumb? picture 52 picture.content_type.include?("image/") 53 end 54 55end

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問