Tag: amazon s3

AWS :: S3 :: S3Object.url_for – 如何使用新的AWS SDK Gem执行此操作?

我一直在使用paperclip和aws-s3: def authenticated_url(style = nil, expires_in = 90.minutes) AWS::S3::S3Object.url_for(attachment.path(style || attachment.default_style), attachment.bucket_name, :expires_in => expires_in, :use_ssl => true) end 新的回形针使用AWS-SDK gem,它打破了这个错误: undefined method `url_for’ for AWS::S3:Class 任何人都知道如何使用此方法来使用新的AWS-SDK gem?

在s3上设置mp4文件的内容类型

我在paperclip gem和s3存储的帮助下将用户上传的video添加到我的RoRs站点。 由于某种原因,我无法弄清楚,每当用户上传mp4文件时,s3将该文件的内容类型设置为application/mp4而不是video/mp4 。 请注意,我在初始化文件中注册了mp4 mime类型: Mime::Type.lookup_by_extension(‘mp4’).to_s => “video/mp4” 这是我的Post模型的相关部分: has_attached_file :video, :storage => :s3, :s3_credentials => “#{Rails.root.to_s}/config/s3.yml”, :path => “/video/:id/:filename” validates_attachment_content_type :video, :content_type => [‘video/mp4’], :message => “Sorry, this site currently only supports MP4 video” 我的回形针和/或s3设置中缺少什么。 ####更新##### 由于某些原因,我不知道Rails,我的mp4包含文件的默认mime类型如下: MIME::Types.type_for(“my_video.mp4”).to_s => “[application/mp4, audio/mp4, video/mp4, video/vnd.objectvideo]” 因此,当回形针将mp4文件发送到s3时,它似乎将文件的mime类型识别为第一个默认值“application / mp4”。 这就是为什么s3将文件标识为具有“application / mp4”的内容类型的原因。 因为我想启用这些mp4文件的流媒体,我需要使用回形针将文件识别为具有mime类型的“video / mp4”。 有没有办法修改回形针(可能在before_post_processfilter中)以允许这样做,或者有没有办法通过init文件修改rails以将mp4文件识别为“video […]

AWS S3,Paperclip缺少必需:bucket选项

我正在尝试在Heroku上使用Paperclip和SWS S3来让用户上传图像。 我没有将凭据存储在yml文件中。 我按照Heroku页面上的说明操作: https : //devcenter.heroku.com/articles/paperclip-s3 但是,当我尝试运行我的应用程序并上传图像时,我收到此消息: missing required :bucket option Rails.root: /Users/scottsipiora/Sites/clycss Application Trace | Framework Trace | Full Trace app/controllers/instructors_controller.rb:63:in `block in update’ app/controllers/instructors_controller.rb:62:in `update’ 说明中没有提到有关在我的控制器中进行更改的任何内容。 我看到一些例子告诉我要输入类似的东西: 在我的模型中,我有以下代码: class Instructor ‘, square: ‘200×200#’, medium: ‘300×300>’ } end 在我的production.rb中我(显然用模拟凭证替换了我的真实凭证): config.paperclip_defaults = { :storage => :s3, :s3_credentials => { :bucket => ENV[‘bucket name’], :access_key_id […]

Rails 3,paperclip + S3 – 如何存储实例并保护访问权限

我有一个带回形针的Rails 3应用程序,目的是在S3上存储数据。 在应用程序中,用户属于一个实例。 我希望每个实例的所有模型都存储数据。 并且希望阻止来自实例A的用户访问或能够从实例B加载数据。 处理这个问题的最佳方法是什么? 谢谢

exif图像旋转问题使用carrierwave和rmagick上传到s3

我的rails应用程序中有一个照片上传function。 该应用程序通过rmagick和雾直接通过carrierwave上传到s3。 我遇到的问题是通过手机上的“拍照选项”上传照片时(注意这是iphone,但我相信Android有同样的问题)。 上传后,图像在手机上显示正常,但在桌面上查看时,图像会旋转90度。 通过我的研究,它看起来是exif的一个问题。 此stackoverflow响应程序概述了2个可能的解决方案。 这个要点也看起来很有希望。 到目前为止,我发现了一些解决方案,但没有一个有效。 理想情况下,我希望将照片作为肖像保存到s3,然后按原样显示图像。 任何建议都很受欢迎。 以下是我的代码 应用程序/上传/ image_uploader.rb class ImageUploader < CarrierWave::Uploader::Base include CarrierWaveDirect::Uploader include CarrierWave::RMagick # Include the Sprockets helpers for Rails 3.1+ asset pipeline compatibility: include Sprockets::Helpers::RailsHelper include Sprockets::Helpers::IsolatedHelper include CarrierWave::MimeTypes process :fix_exif_rotation process :set_content_type version :thumb do process resize_to_fill: [200, 200] end def extension_white_list %w(jpg jpeg png) […]

使用activestorage直接上传时如何在上传到S3时指定前缀?

使用标准S3配置: AWS_ACCESS_KEY_ID: [AWS ID] AWS_BUCKET: [bucket name] AWS_REGION: [region] AWS_SECRET_ACCESS_KEY: [secret] 我可以使用此Rails 5.2代码将文件上传到S3(使用直接上传)(仅显示相关代码): form.file_field :my_asset, direct_upload: true 在提交表单后,这将有效地将我的资产置于我的S3存储桶的根目录中。 如何指定前缀(例如“development /”,以便我可以模仿S3上的文件夹)?

Ruby和Amazon S3如何打开文件并进行身份validation?

如何在Amazon S3上打开文件并进行身份validation? 我知道如何用回形针做到这一点,但是如何打开文件呢? 我的帮手 File.open(“#{RAILS_ROOT}/public/xml/#{output}.xml”, “w”) do |f| f.puts(“”) f.puts(“”) f.puts(“photographer/image/../photographer/flv/”) f.puts(“#{xmlmenu.to_xml}”) f.puts(“#{xmlmovies.to_xml}”) f.puts(“#{xmltextpages.to_xml}”) f.puts(“”) end UPDATE My helper file: module Admin::XmlHelper require ‘builder’ require ‘aws/s3’ def update_xml(output) AWS::S3::Base.establish_connection!( :access_key_id => ‘mykey’, :secret_access_key => ‘mykey’ ) file = “xml/#{output}.xml” content = “#{ f.puts(“”) f.puts(“”) f.puts(“photographer/image/../photographer/flv/”) f.puts(“#{xmlmenu.to_xml}”) f.puts(“#{xmlmovies.to_xml}”) f.puts(“#{xmltextpages.to_xml}”) f.puts(“”)}” AWS::S3::S3Object.store(file, content, “mybucket”, :access => :public_read) […]

Carrierwave – 仅在从存储中删除已装入的文件后销毁对象

Carrierwave在对象销毁完成后删除文件: after_commit :remove_avatar! :on => :destroy https://github.com/carrierwaveuploader/carrierwave 我有一个删除文件的工人。 如果其中一个工作人员在从S3删除文件时超时,我将失去对S3上文件的跟踪,并且我的存储桶变得一团糟(因为我的对象已安装文件已从我的数据库中消失)。 我该怎么处理? 直接调用remove_avatar! 在我的object.destroy然后skip_callback? 安全吗?

使用Paperclip和AWS上传大文件时出错

Heroku上的我的rails应用程序允许用户使用回形针上传照片以存储在amazon web servicesS3上。 当照片的大小超过1.5MB时,应用程序似乎超时了。 解决这个问题的最佳方法是什么? 如果有帮助,这是堆栈跟踪? E, [2013-10-07T14:15:57.018396 #5] ERROR — : /app/vendor/bundle/ruby/1.9.1/gems/actionpack-3.2.12/lib/action_dispatch/middleware/static.rb:62:in `call’ 2013-10-07T14:15:57.018974+00:00 app[web.2]: E, [2013-10-07T14:15:57.018430 #5] ERROR — : /app/vendor/bundle/ruby/1.9.1/gems/rack-cache-1.2/lib/rack/cache/context.rb:136:in `forward’ 2013-10-07T14:15:57.018974+00:00 app[web.2]: E, [2013-10-07T14:15:57.018772 #5] ERROR — : /app/vendor/bundle/ruby/1.9.1/gems/rack-cache-1.2/lib/rack/cache/context.rb:143:in `pass’ 2013-10-07T14:15:57.018974+00:00 app[web.2]: E, [2013-10-07T14:15:57.018946 #5] ERROR — : /app/vendor/bundle/ruby/1.9.1/gems/rack-cache-1.2/lib/rack/cache/context.rb:71:in `call!’ 2013-10-07T14:15:57.019152+00:00 app[web.2]: E, [2013-10-07T14:15:57.018983 #5] ERROR — : /app/vendor/bundle/ruby/1.9.1/gems/rack-cache-1.2/lib/rack/cache/context.rb:51:in `call’ 2013-10-07T14:15:57.019152+00:00 […]

Heroku的神秘短暂文件系统不让我从S3获取文件

所以,我几天来一直在努力解决这个问题… 我需要从S3获取一个文件并将其写入Heroku上我的Rails应用程序中的目录。 我必须对Heroku上的短暂文件系统有误解,因为我无法弄清楚它为什么不起作用。 我正在运行s3.bucket(‘bucket’).object(‘file.csv’).get(response_target: ‘file.csv’)从S3获取文件并将其写入我的应用程序。 最初我只是编写了一个.rb来执行此操作并使用Heroku Scheduler运行它,但无济于事。 然后我将脚本转换为rake任务并再次在scheduler上运行,但无济于事。 我可以在我的开发环境中完美地运行.rb脚本和rake任务。 在阅读了这篇以及关于短暂文件系统如何工作的内容之后, 我认为该任务实际上正在工作,但是当我在heroku run bash使用ls时,文件被破坏(或实际上是在那里但我看不到它?) 。 有人可以解释一下我的情况吗? 如果我在Heroku上从S3写入我的应用程序获取文件的努力是徒劳的? 如果还有其他选择吗? 如果我在此之后无法理解,那么我将在EC2中设置我自己的环境。