Tag: amazon s3

Paperclip不保存在数据库中

我使用以下gem: ‘paperclip’ ‘aws-sdk’, ‘~> 2.3’ 我想将图像保存到S3,但无法让它们保存。 模型/ user.rb class User ‘, square: ‘200×200#’, medium: ‘300×300>’ } # Validate the attached image is image/jpg, image/png, etc validates_attachment_content_type :avatar, :content_type => /\Aimage\/.*\Z/ end 移民 class AddAvatarToUsers < ActiveRecord::Migration[5.1] def self.up add_attachment :users, :avatar end def self.down remove_attachment :users, :avatar end end 控制器/ users_controller.rb class UsersController < ApplicationController […]

s3如何计算签名

我无法弄清楚签名需要什么。 我看到一些使用hex的例子,其他我看到使用base64。 哪一个? Base64.encode64(OpenSSL::HMAC.digest(‘sha256’, getSignatureKey, @policy)).gsub(/\n|\r/, ”) 要么: OpenSSL::HMAC.hexdigest(OpenSSL::Digest.new(‘sha256’), getSignatureKey, @policy).gsub(/\n|\r/, ”)

如何在Object.get的输出中获取文件流

我在aws-sdk-ruby的帮助下编写了一个Rails API,它从AWS检索文件并在API的响应中返回。 我可以在object.get的响应中以某种方式得到文件流,我可以直接从Rails API返回。 s3 = Aws::S3::Resource.new bucket_name = “my_bucket” bucket = s3.bucket(bucket_name) object = bucket.object(“a/b/my.pdf”) Rails.logger.info ‘Downloading file to AWS’ downloaded_data = object.get({}) send_data(downloaded_data, :filename => “my.pdf”, :type => “mime/type” ) 但它不会返回文件。 我知道的一个选项是首先使用以下行在本地保存文件: object.get(response_target: ‘/tmp/my.pdf’) 我可以返回此文件, 但有没有办法跳过此步骤并直接返回object.get的响应而不保存在本地 。 我无法使用此解决方案,因为我的URL不公开,我只是创建一个REST API。 当我尝试这个解决方案时,我得到了屏幕。

Paperclip,S3,Heroku:缺少图像

长时间观看,第一次问问。 我搜索过这个主题,但不相信我找到了答案。 我有一个有图像的Post模型。 我正在使用Paperclip gem,保存到Amazon S3,并在Heroku上托管。 文件上传表单工作正常,因为我可以看到图像被发送到我的S3存储桶。 问题在于,图像实际上并未在生产中显示。 这是我的模特: class Post ” } validates_attachment_content_type :image, content_type: /\Aimage\/.*\Z/ 这是我的config / production.rb: # Required for Paperclip / AWS config.paperclip_defaults = { :storage => :s3, :s3_credentials => { :bucket => ENV[‘S3_BUCKET_NAME’], :access_key_id => ENV[‘AWS_ACCESS_KEY_ID’], :secret_access_key => ENV[‘AWS_SECRET_ACCESS_KEY’] } } 这是我的show.html.haml文件: .clearfix .post_image_description = image_tag @post.image.url(:medium) .description= simple_format(@post.address) .description= […]

如何使用ruby将S3存储桶中的文件内容下载到内存中?

这里是ruby的新手, 我在Amazon AWS S3中有一个存储桶,其中有一个名为users.csv的文件 如何将这个文件的内容从S3存储桶加载到内存中? 我希望能够在将文件加载到内存后解析该文件的内容。 这是我的代码: require ‘aws-sdk’ s3 = Aws::S3::Resource.new(region: ‘us-west-1’) resp = s3.list_objects(bucket: ‘bucket-name’, max_keys: 1) resp.contents.each do |object| puts #{object.value} end 当我在IRB中尝试这个时,我得到: struct Aws :: S3 :: Types :: Object key =“users.csv”,last_modified = 2017-11-15 19:10:28 UTC,etag =“\”9a3d50c07aa4aa6976037ce774294a26 \“”,size = 101,storage_class =“ STANDARD“,owner = struct Aws :: S3 :: Types :: Owner […]

上传器产生有关应存储路径的列的错误

Image模型与Organization模型具有1:1的关联。 在组织控制器中, create方法调用名为upload_file的Image模型方法。 def create @organization = Organization.new(new_params) if @organization.save Image.upload_file(@organization.id) end end upload_file方法使用carrierwave上传器将标准文件存储在Amazon S3存储桶中。 为此,Image模型包括mount_uploader :file_name, ImageUploader 。 我的问题是如何为上传的文件创建一个Image实例? 存储文件的路径应存储在Image模型的列file_name中。 与图像关联的组织应存储在Image模型的organization_id列中。 我怎样才能做到这一点? 更具体地说,我应该为下面的模型方法添加什么代码? (另请参阅以下方法中的注释。 def self.upload_file(organization_id) file = ‘app/assets/emptyfile.xml’ uploader = ImageUploader.new uploader.store!(file) # Am I correct to assume that the previous line uploads the file using the uploader, but does not yet create […]

使用carrierwave上传到S3时获取mp3持续时间

我正在写一个应用程序,它基本上是一个音乐平台。 我希望通过其元数据获取mp3的持续时间并将其保存在表中,然后再将其上传到S3。 我使用了载波和雾gem的组合来上传。 提取mp3元数据以保存到数据库的推荐方法是什么?

Rails Heroku服务器回形针Amazon S3 – AWS :: S3 :: Errors :: RequestTimeout

当我使用附加图像保存我的konkurrencer模型时,我在Heroku上收到错误,但在我的本地服务器上没有。 。 我的heroku日志: ←[36m2012-04-01T17:45:37+00:00 app[web.1]:←[0m Started POST “/admin/konkurrencer s” for MYIP at 2012-04-01 10:45:37 -0700 ←[33m2012-04-01T17:46:01+00:00 heroku[router]:←[0m POST www.konkurrencerher.dk/a dmin/konkurrencers dyno=web.1 queue=0 wait=0ms service=24565ms status=500 bytes= 728 ←[32m2012-04-01T17:46:01+00:00 heroku[nginx]:←[0m MYIP – – [01/Apr/201 2:17:46:01 +0000] “POST /admin/konkurrencers HTTP/1.1” 500 728 “http://www.konku rrencerher.dk/admin/konkurrencers/new” “Mozilla/5.0 (Windows NT 6.1; WOW64; rv:1 1.0) Gecko/20100101 Firefox/11.0” www.konkurrencerher.dk ←[36m2012-04-01T17:46:01+00:00 app[web.1]:←[0m ←[36m2012-04-01T17:46:01+00:00 […]

在Amazon S3中自动删除超过n天的对象(如何?)

我使用ruby lib( http://sofzh.miximages.com/ruby-on-rails/pprecodeS3Object.delete ‘photo-1.jpg’, ‘photos’ 有没有办法自动删除超过一周的图像? 如果它不存在,我将不得不写一个守护进程来做到这一点:-( 谢谢 更新:现在有可能,检查罗伯托的答案。

如何使用CarrierWave从S3获取真实文件

我有一个应用程序,它读取文件的内容并对其进行索引。 我将它们存储在磁盘本身,但现在我正在使用Amazon S3,因此以下方法不再起作用。 它是这样的: def perform(docId) @document = Document.find(docId) if @document.file? #You should’t create a new version @document.versionless do |doc| @document.file_content = Cloudoc::Extractor.new.extract(@document.file.file) @document.save end end end @document.file返回FileUploader , doc.file.file返回CarrierWave::Storage::Fog::File类。 我怎样才能获得真实的文件?