Tag: 文件上传

使用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应用程序,它使用Paperclip处理文件上传到运行apache2,passenger,rails 3.2.3和ruby 1.9.3的linux ubuntu 10.04服务器。 我的设置在开发中完美无缺,但是现在生产中的图像永远不会保存。 我在production.rb中注释掉了以下几行,以便rails处理文件上传,并尝试使用和安装XSendFile。 # Specifies the header that your server uses for sending files # config.action_dispatch.x_sendfile_header = “X-Sendfile” # for apache # config.action_dispatch.x_sendfile_header = ‘X-Accel-Redirect’ # for nginx 和我的照片.rb attr_accessible :photo_file_name, :photo_file_size, :photo_content_type, :photo, :splash_image validates_presence_of :photo_file_name, :photo_content_type, :photo_file_size has_attached_file :photo, styles: { thumb: “150×150>” }, url: “/assets/splash_images/:id/:style/:basename.:extension”, path: “:rails_root/public/assets/splash_images/:id/:style/:basename.:extension” validates_attachment_size […]

Carrierwave_Direct的direct_upload_form_for为FileUploader返回未定义的方法`model_name’:Class

我一直在努力解决这个问题几个小时了。 在我的视图中使用carrierwave_direct的direct_upload_form_for时,它会返回以下错误: FileUploader Carrierwave类: class FileUploader < CarrierWave::Uploader::Base include CarrierWaveDirect::Uploader end 手动文件模型: class ManualFile include Mongoid::Document mount_uploader :file, FileUploader field :name, :type => String end UploadController: class UploadController < ApplicationController def manual_new @uploader = ManualFile.new.file @uploader.success_action_redirect = upload_edit_path end def manual_edit @myfile = ManualFile.new(key: params[:key]) end end 我的看法: 我无法理解我做错了什么。 我试图跟随这个railscast 。 我正在使用Ruby 1.9.3,Rails 3.2.3,Mongoid 3和载波波gem指向github […]

attach_file与capybara-webkit的工作方式不正确

我正在尝试将一些文件附加到此输入: 当我使用selenium驱动程序时,我的代码是: attach_file(‘image’, File.absolute_path(‘../pictures/pic1.JPG’)) attach_file(‘image’, File.absolute_path(‘../pictures/pic2.JPG’)) attach_file(‘image’, File.absolute_path(‘../pictures/pic3.JPG’)) 当我使用capybara-webkit时出现问题:由于隐藏了输入并且某些元素与其重叠,我需要更改一些css属性: page.execute_script(“$(‘input[name=image]’).css(‘opacity’,’1′)”) page.execute_script(“$(‘input[name=image]’).css(‘position’,’fixed’)”) page.execute_script(“$(‘input[name=image]’).css(‘top’,’620px’)”) 即使测试通过,图片也不会以正确的方式上传。 如果我使用page.save_screenshot(‘after_upload.png’)来查看发生了什么: 预期结果(使用selenium驱动时的结果) – > 使用capybara-webkit时的实际结果 – >

jQuery-File-Upload内容类型/扩展validation

我正在使用带有rails 3的jQuery-File-Upload,它运行得很好。 但我没有找到任何关于如何在客户端validation上传文件的扩展名或内容类型的内容。 有没有办法做到这一点? 因为我无论如何都会通过Paperclip在server-sidvalidation它,但我认为在客户端进行一次validation会更好。

jQuery Remotipart将发送到服务器

我正在尝试使用ajax将文件上传到我的Rails应用程序。 为了促进这一点,我已经包含了jQuery.remotipart gem 。 // app/assets/javascripts/application.js //= require jquery.remotipart 我有一个上传文件的表格。 这些文件由CarrierWave处理。 不幸的是,当我提交附有文件的表单时,它似乎没有正确到达我的控制器操作。 params hash将JS对象字符串化为键。 Started POST “/file_imports” for 127.0.0.1 at 2012-11-06 01:00:49 +0000 Processing by FileImportsController#create as JS Parameters: {“object Object”=>{“,”=>{“object Object”=>{“,”=>{“object Object”=>nil}}}}}` 在Chrome的开发工具中,我可以看到这确实是发送到服务器的表单数据: 当我删除remote: true时,表单非常有效remote: true (当然,在这种情况下,它会发送HTML请求而不是JS请求)。 任何人都知道我做错了什么? 顺便说一句,我使用的是Rails 3.2.8和Remotipart 1.0.2(最新版)。 编辑:做了一些挖掘。 看看Remotipart的来源,我似乎无法理解它应该做什么。 例如,在vendor/assets/javascripts/jquery.remotipart.js ,第22行具有以下内容: settings.data = form.serializeArray(); 再向下,设置将通过$.rails.ajax(settings)发送到服务器。 $.fn.serializeArray()方法返回一个JS对象数组。 如果我们将它们分配给jQuery.ajax()调用的data属性,那将解释我在服务器上看到的序列化对象参数。 我们需要传递一个对象作为数据属性,而不是一个对象数组? 但是,当我尝试将数组展平为一个对象时,整个事情就会中断并且HTML请求被发送到服务器而不是JS服务器。 我认为它与jQuery.ajax.processData […]

Rails 4多文件上传解决方案

有人有解决方案吗? 你能指出一个不是http://railscasts.com/episodes/381-jquery-file-upload的,因为它已经过时了。

RoR – 在rails中上传大文件

我有一个rails webapp,允许用户上传video,它们存储在NFS安装目录中。 当前设置适用于较小的文件,但我也需要支持大文件上传(最高4GB)。 当我尝试上传4gb文件时,它最终会发生,但从UX的角度来看很糟糕:上传开始并根据XHR’进度’事件显示进度,但是在100%之后,仍然需要等待很长时间(5分钟以上) )在服务器响应请求之前。 最初我认为这与将文件从某个临时目录复制到最终的NFS安装目录有关。 但现在我不太确定。 在我的路由添加日志记录后,我发现文件上传进度达到100%与控制器操作中的代码运行之间有大约3分钟的等待时间(在我将文件移动到NAS之前进行任何处理之前) 。 我想知道以下内容: 在上传完成后和我的操作被调用之前的3分钟等待期间发生了什么? 有没有办法让我考虑在此期间发生的任何事情,以便客户端在上传完成后立即获得响应,以便他们不会超时? 如何在Rails中处理大文件上传? 这似乎是一个常见的问题,但我似乎无法找到任何东西。 (注意:当我发现这个问题时,我最初使用CarrierWave进行上传。我删除了它,只是直接在我的模型中使用FileUtils处理文件保存,以确保等待时间不是因为某些CarrierWave魔法发生在场景,但得到完全相同的结果。) ruby -v:1.9.3p362 rails -v:3.2.11

Rails背景图片上传

我正在使用“carrierwave”gem来上传图像文件,还使用“carrierwave backgrounder”处理上传+在后台使用RMagick处理图像(我使用延迟作业)。 一切都像魅力一样。 除了一件事 – 我想上传图像并在上传表单下显示它们(因此,所有内容都发生在同一页面上)。 所以,基本上,会发生什么 – 因为上传和图像处理相对较慢,到发布后页面呈现时 – 图像本身还没有准备好:所以image_tag显示了破碎的“资产”链接(href =“资产”)。 等待2-3秒(几次刷新)后,图像出现在屏幕上。 所以,我的问题是 – 我可以以某种方式显示“ 加载 ”动画(或文本,或其他图片 – 无关紧要) 而不是破碎(尚未提供)的图像,并且一旦准备就绪 – 将图像显示到用户。 这可以在没有AJAX的情况下完成吗? 或者我应该考虑用AJAX重新做它? 对不起,长话故事。 希望对你有所帮助! 提前致谢! 🙂

Paperclip – nil的未定义方法`match’:NilClass

我是铁杆和ruby的新手。 我正在创建一个简单的应用程序,我可以上传照片。 我安装了paperclip gem,我正在尝试在我的模型中配置它以指定缩略图大小,如下所示: has_attached_file :photo, :styles => {:thumb => ‘120×120>’, :large => ‘640×480>’ }, :default_style => :thumb, :url => “/system/photos/:basename.:extension”, :path => “:rails_root/public/system/photos/:basename.:extension” 但是,我一直收到错误: undefined method `match’ for nil:NilClass 当我删除:styles参数时,一切都按预期工作。 任何人都可以解决一些问题并指出我正确的方向吗? 谢谢 编辑: 堆栈跟踪如下: C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/bundler/gems/paperclip-70f0f1fea030/lib/paperclip/content_type_detector.rb:60:in `type_from_file_command’ C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/bundler/gems/paperclip-70f0f1fea030/lib/paperclip/content_type_detector.rb:16:in `detect’ C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/bundler/gems/paperclip-70f0f1fea030/lib/paperclip/io_adapters/file_adapter.rb:14:in `cache_current_values’ C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/bundler/gems/paperclip-70f0f1fea030/lib/paperclip/io_adapters/file_adapter.rb:5:in `initialize’ C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/bundler/gems/paperclip-70f0f1fea030/lib/paperclip/io_adapters/registry.rb:29:in `new’ C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/bundler/gems/paperclip-70f0f1fea030/lib/paperclip/io_adapters/registry.rb:29:in `for’ C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/bundler/gems/paperclip-70f0f1fea030/lib/paperclip/attachment.rb:412:in `post_process_style’ C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/bundler/gems/paperclip-70f0f1fea030/lib/paperclip/attachment.rb:402:in `block in post_process_styles’ C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/bundler/gems/paperclip-70f0f1fea030/lib/paperclip/attachment.rb:401:in `each’ […]