Tag: amazon s3

使用Ruby aws-sdk跟踪上传文件到S3的进度

首先,我知道在SO中有很多类似于这个的问题。 在过去的一周里,我读过大多数(如果不是全部的话)。 但我仍然不能为我做这项工作。 我正在开发一个Ruby on Rails应用程序,允许用户将mp3文件上传到Amazon S3。 上传本身效果很好,但进度条可以极大地改善网站上的用户体验。 我正在使用aws-sdk gem,这是来自亚马逊的官方gem。 在上传过程中,我在其文档中随处可见回调,但我找不到任何内容。 文件一次一个地上传到S3,因此不需要将其加载到内存中。 也不需要多文件上传。 我想我可能需要使用JQuery来完成这项工作,我很好。 我发现这看起来很有前途: https : //github.com/blueimp/jQuery-File-Upload我甚至试过这里的例子: https : //github.com/ncri/s3_uploader_example 但我无法让它对我有用。 aws-sdk的文档还简要描述了使用块的流上传: obj.write do |buffer, bytes| # writing fewer than the requested number of bytes to the buffer # will cause write to stop yielding to the block end 但这几乎没有帮助。 如何“写入缓冲区”? 我尝试了一些总是会导致超时的直观选项。 我怎么能基于缓冲更新浏览器? 有没有更好或更简单的解决方案? […]

Rails ArgumentError(缺少必需:bucket选项)修复不起作用?

我的Rails应用程序托管在Heroku上,但我需要让Paperclip在本地工作,以便我可以在测试中上传照片。 我真的很接近,但我坚持“缺少必需:桶选项”错误。 我尝试在环境文件中移动设置,以及添加带有AWS凭据的config / application.yml文件,但没有骰子。 这是我在development.rb中的配置(在production.rb中看起来相同): 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’] } } 我试过移动:bucket属性在s3_credentials之外,但它没有改变任何东西。 Application.yml看起来像这样: AWS_ACCESS_KEY_ID=”xxxxxxxxxxxxxxxxx” AWS_SECRET_ACCESS_KEY=”xxxxxxxxxxxxxxxxxxxx” S3_BUCKET_NAME=”xxxxxx” 我还安装了dot-env gem并将s3.env文件添加到我的应用程序的索引中,该索引包含与上面相同的凭据,但即使这样也没有用。 也没有将我的Paperclip配置添加到我的模型中的has_attached_file中。 我该怎么办??

“拒绝访问” – 用户对S3 Bucket的权限

我发送了一封自动发送电子邮件的订单,现在我正试图找到一个下载PDF收据的链接。 用户在尝试下载时在浏览器中收到错误“此XML文件似乎没有与之关联的任何样式信息。文档树如下所示。” 我已经进入水桶并在收据桶上运行“公开”,仍然没有运气。 文件结构是: 应用程序名称/上传/顺序/收据 我需要做什么才能允许用户下载收据的权限?

使用RoR,FbGraph Gem和S3将照片发布到Heroku的Facebook Open Graph

我试图允许用户在他的Facebook墙上分享照片。 我使用Paperclip将所有应用程序的照片存储在S3上。 因此,在下面的示例中,@ photo.image.url是我要在some_album中发布的图像的S3url。 使用fb_graph gem,这在localhost上相对容易。 在我的控制器中,我有: the_photo = open(@photo.image.url) some_album.photo!( :access_token => access_token, :source => the_photo ) local_photo在localhost上的类是“Tempfile”。 在heroku上,事情变得棘手。 使用相同的代码两个(看似相关)的事情发生。 首先,the_photo是类类型“stringIO”。 第二,当FbGraph发布到Facebook时,我收到以下错误: FbGraph::InvalidRequest (OAuthException :: (#324) Requires upload file): 下面是一些可能有帮助的事实要点: Heroku是一个只读系统,但显然你可以写入Tempfile 我在Rails 3.1.0上 Ruby 1.9.2 Heroku Stack Bamboo-Miri 任何帮助/想法/工作/问题将不胜感激。

图像似乎被添加到桶中,无法在我的应用程序上查看它

我刚刚将回形针实现到我在heroku上托管的rails应用程序中。 该应用程序似乎连接并将图像上传到s3。 以下是我在应用程序上提交表单时的一些日志示例: 2013-06-01T17:52:45.112448+00:00 app[web.1]: Parameters: {“utf8″=>”✓”, “authenticity_token”=>”2/vRFLrAnBnokNwohVfMhG74d3HN0/GTwype2jGJm9w=”, “illustration”=>{“name”=>”Test”, “illustrator”=>”Test”, “image”=>#<ActionDispatch::Http::UploadedFile:0x000000050d9a58 @original_filename="DEISIGN_Cover_Illustration.jpg", @content_type="image/jpeg", @headers="Content-Disposition: form-data; name=\"illustration[image]\"; filename=\"DEISIGN_Cover_Illustration.jpg\"\r\nContent-Type: image/jpeg\r\n", @tempfile=#>, “edition_id”=>”17”, “tag_list”=>”Test”, “description”=>”Test”}, “commit”=>”Update Illustration”, “id”=>”199″} 2013-06-01T17:52:45.113280+00:00 app[web.1]: [AWS S3 200 0.424977 0 retries] head_object(:bucket_name=>”haggard”,:key=>”illustrations/images/000/000/199/original/DEISIGN_Cover_Illustration.jpg”) 2013-06-01T17:52:45.113496+00:00 app[web.1]: 2013-06-01T17:52:45.113496+00:00 app[web.1]: [AWS S3 200 0.085094 0 retries] head_object(:bucket_name=>”haggard”,:key=>”illustrations/images/000/000/199/thumb/DEISIGN_Cover_Illustration.jpg”) 2013-06-01T17:52:45.113496+00:00 app[web.1]: 2013-06-01T17:52:45.624956+00:00 app[web.1]: [AWS S3 204 0.099689 0 retries] […]

密钥就在那里,但我仍然得到`fetch’:找不到密钥:“S3_BUCKET_NAME”(KeyError)

我知道有很多这样的问题,但我试图跟着每一个没有运气。 我必须忽略一些容易出错的错误。 我正在尝试按照Heroku指南设置S3和Paperclip,并按照此词和代码指南设置本地测试。 每次我尝试生成数据库迁移,但我收到错误: config/environments/development.rb:62:in fetch’: key not found: “S3_BUCKET_NAME” (KeyError) 这些是我的文件,完全替换了键: development.rb config.paperlip_defaults = { storage: :s3, s3_credientials: { bucket: ENV.fetch(‘S3_BUCKET_NAME’), access_key_id: ENV.fetch(‘AWS_ACCESS_KEY_ID’), secret_access_key: ENV.fetch(‘AWS_SECRET_ACCESS_KEY’), s3_region: ENV.fetch(‘AWS_REGION’) } } .ENV S3_BUCKET_NAME=some-bucket-name AWS_ACCESS_KEY_ID=AAAAAABBBBBCCCCCDDDD AWS_SECRET_ACCESS_KEY=AAAAABBBBBCCCCCDDDDDEEEEE AWS_REGION=us-east-1 我错过了什么? 编辑:我已尝试将ENV值添加到我的~/.bashrc和~/.bash_profle中, 如此问题所示 ,但错误相同。

在rails中将对象上传到Amazon s3时添加Tag

我正在尝试将CS​​V文件上传到Amazon S3。 我可以使用下面的代码片段添加元数据: s3_obj.upload_file(file_to_be_uploaded, {“content_type”: “application/octet-stream”} 如何在上传时添加合适的标签(键值对) – 例如exp: tag = { marked_to_delete: “true” } ?

将video上传到heroku时出错

我在我的rails应用程序中使用了paperclip和paperclip-av-transcoder,我已经到了可以在本地上传video的地步。 但是当我在heroku中尝试它时,我得到了这个错误。 Av :: UnableToDetect(无法检测到任何支持的库): 我可能需要添加一些东西才能使它与s3一起使用,但我之前已经使用过图像,因此应该为s3设置所有内容。 这是我模型中的代码 class Classvideo { :medium => {:geometry => “640×480”, :format => ‘flv’}, :thumb => { :geometry => “100×100#”, :format => ‘jpg’, :time => 10 } }, :processors => [:transcoder] validates_attachment_content_type :video, :content_type => [“video/mp4”, “video.mov”, “video/mpeg”,”video/mpeg4″, “image/jpg”, “image/jpeg”] end

从after_post_process或after_save获取id,bin或者bin

我已经打了一段时间了,你的帮助肯定会非常值得赞赏。 我已经建立了一个签署pdf文档的方法,你可以在这里找到,现在离签名文件只有一步之遥。 我想以异步方式执行此操作,但首先我需要了解如何同步执行此操作。 所以我尝试了两种不同的方法,post post_process: after_post_process do |receipt| if receipt.receipt_file_changed? require ‘aws-sdk’ logger.debug(“RECEIPT ID: #{self.inspect}”) file = receipt.receipt_file.queued_for_write[:original] s3=AWS::S3.new( access_key_id: S3_CONFIG[“access_key_id”], secret_access_key: S3_CONFIG[“secret_access_key”]) bucket_name = S3_CONFIG[“bucket”] b = s3.buckets[bucket_name] filen = File.basename(file.path) outputF = “original/teste.pdf” o = b.objects[outputF] o.write(file: file.path) end end 我希望能够将文件发送到类似/original/1/myfilename.pdf的路径,其中1将是我的receipt_id(并且在after post_process时为null)。 然后我尝试了与after_save不同的方法,但receipt_file.to_file(:original)不是有效的调用… after_save do |receipt| if receipt.receipt_file_changed? require ‘aws-sdk’ logger.debug(“RECEIPT ID: #{receipt.inspect}”) […]

带有Rails资产管道和S3主机的SVG字体

我有一个Rails项目,托管在Heroku上,我只是将我的资产托管到S3。 对于一些自定义字体(来自icomoon的SVG字体),这一切都很顺利。 他们没有工作,当我查看我的网络资源时,我可以看到我的S3存储桶没有显示: @font-face{font-family:’Starter-Icons’;src:url(https://.s3.amazonaws.com/fonts/Starter-Icons.eot);src:url(https://.s3.amazonaws.com/fonts/Starter-Icons.eot?#iefix) 但是,使用S3托管的其他资产(图像,样式表等)包括正确的存储桶名称。 我的font-face声明在.less文件中(这不需要是.less.erb文件吗?) @font-face { font-family: ‘Starter-Icons’; src:font-url(“Starter-Icons.eot”); src:font-url(“Starter-Icons.eot?#iefix”) format(’embedded-opentype’), font-url(“Starter-Icons.woff”) format(‘woff’), font-url(“Starter-Icons.ttf”) format(‘truetype’), font-url(“Starter-Icons.svg#Starter-Icons”) format(‘svg’); font-weight: normal; font-style: normal; } 我的所有字体都在/app/assets/fonts 。 我已经按照接受的答案中的步骤进行了操作 ,但事实上我的存储桶名称没有出现在字体中,这让我相信这是一个不同的问题。 编辑 我正在使用asset_sync gem,其配置如下: if defined?(AssetSync) AssetSync.configure do |config| config.fog_provider = ‘AWS’ config.fog_directory = ‘starterapp’ config.aws_access_key_id = ENV[‘STARTER_AWS_ACCESS_KEY_ID’] config.aws_secret_access_key = ENV[‘STARTER_AWS_SECRET_ACCESS_KEY’] # Don’t delete files from the store […]