标签: paperclip

如何使用Paperclip为附件指定文件名?

我在服务器上有字节流,我想用Paperclip附加到模型类,我希望能够指定它们在文件系统中保存的名称.因为我有很多这些传入的文件,我宁愿能够创建它们,Tempfiles以便我不必担心名称冲突并手动删除它们等.这就是我正在做的事情:

desired_file_name = 'foo.txt'
Tempfile.open([File.basename(desired_file_name), File.extname(desired_file_name)]) do |tf|
  tf.write(content_stream)
  tf.rewind
  model_obj.paperclip_attachment = tf
end
Run Code Online (Sandbox Code Playgroud)

这非常有效.唯一的问题是,我的Paperclip附件最终得到一个临时文件名,如foo.txt.201029392u-gyh-foh96y.txt.那么如何告诉Paperclip将文件保存为什么?通话model_obj.paperclip_attachment_file_name = desired_file_name无效.DB字段被保存为该名称,但在文件系统上我仍然具有该临时文件名.

ruby ruby-on-rails attachment paperclip

1
推荐指数
1
解决办法
2583
查看次数

回形针锐化处理器导致调整样式不起作用

我正在尝试锐化通过回形针上传的图像.锐化代码正在工作,但它导致样式不起作用.代码是这样的:

 has_attached_file :photo,
    :styles => {
                :thumb => {:geometry => "100x100>"},
                :medium => {:geometry => "300x300>"},
                :original => {:geometry => "1024x1024>"}
                },
    :processors => [:sharpen],
    :storage => :s3,
    :s3_credentials => "#{Rails.root}/config/s3.yml",
    :path => "/:style/:id/:filename"
Run Code Online (Sandbox Code Playgroud)

现在,如果我删除处理器选项,则按指定调整上传的图像大小.但是,如果我包含处理器选项,则所有生成的图像都是原始大小.

我的锐化处理器看起来像这样:

module Paperclip
  class Sharpen < Paperclip::Processor
    def initialize file, options = {}, attachment = nil
      super
      @file = file
      @current_format = File.extname(@file.path)
      @basename = File.basename(@file.path, @current_format)
    end

    def make
      dst = Tempfile.new(@basename)
      dst.binmode

      command = "#{File.expand_path(@file.path)} -unsharp 1.5×1.0+1.5+0.02 #{File.expand_path(dst.path)}"

      begin
        success = Paperclip.run("convert", command) …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails paperclip

1
推荐指数
1
解决办法
1208
查看次数

回形针,如何在文件末尾附加一个随机标记?

我正在使用paperclip和我的rails 3应用程序.我想附加一个随机字符串,没有什么可以在文件的末尾长或疯狂缓存CDN.有人知道一个真正简单的方法吗?

这是我目前的情况:

  has_attached_file :photo,
    :styles => { :thumb => "70x70>" },
    :storage => :s3,
    :s3_credentials => "#{Rails.root}/config/s3.yml",
    :path => "/:rails_env/public/users/:id/:style/:basename.:extension",
    .....
Run Code Online (Sandbox Code Playgroud)

我想要一个像FILENAME_31313.png这样的文件名

每次保存照片时31313是随机的.

谢谢

ruby-on-rails paperclip ruby-on-rails-3

1
推荐指数
1
解决办法
2450
查看次数

Paperclip Rspec测试:为什么缺少attr_accessor?

我有一组传递的Rspec用户模型测试,直到我有了paperclip属性"profile picture".

回形针一切都很好,效果很好,但我希望我的测试也能更新通过.我刚刚将此行添加到user_spec文件的@attr:

:avatar => File.new (Rails.root + "public/images/Default_profile_picture.jpg")
Run Code Online (Sandbox Code Playgroud)

在before_each循环中,为用户模型创建一组标准的工作属性.

当我运行测试时,所有测试都会给出错误消息:

User model missing required attr_accessor for 'avatar_file_name' ... 
Run Code Online (Sandbox Code Playgroud)

将paperclip的字段作为attr_accessor放在模型中会使问题在测试中消失,但我认为我不应该在我的模型中执行此操作(如果我这样做,则无法正常工作).

有没有人知道为什么我在测试时收到这些错误消息?...(我在spec/helper中包含了配置行Shoulda :: Matchers和需要的回形针)

感谢您发布的任何答案!

testing rspec paperclip ruby-on-rails-3

1
推荐指数
1
解决办法
1123
查看次数

Heroku现在接受使用Paperclip上传的应用程序吗?

我的兄弟告诉我,我需要在我的应用程序上安装Amazon S3才能使用Paperclip.但是,我只是将我的应用程序推送到Heroku生产服务器,我可以上传图像没问题.我没有安装S3.

ruby-on-rails heroku paperclip

1
推荐指数
1
解决办法
334
查看次数

Rails - 如何创建文件(XML)并将其保存到Amazon S3存储桶中?

我需要将数据库表中的所有产品生成到XML文件中.因为我的应用程序在Heroku上运行,所以我需要使用Amazon S3作为存储.

以下是有关如何保存图像的示例:

has_attached_file :photo,
       :styles => {
       :thumb=> "100x100#",
       :small  => "400x400>" },
     :storage => :s3,
     :s3_credentials => "#{RAILS_ROOT}/config/s3.yml",
     :path => "/:style/:id/:filename"
Run Code Online (Sandbox Code Playgroud)

这让我有点困惑......因为我不确定这项任务的逻辑.我的想法是create_xml_feedProducts控制器中运行一个动作(比方说)

 xml = Builder::XmlMarkup.new( :indent => 2 )
 xml.instruct! :xml, :encoding => "ASCII"
 xml.product do |p|
   p.name "Test"
 end
Run Code Online (Sandbox Code Playgroud)

但问题来了 - 我不知道,如何将新创建的文件保存到Amazon S3 Bucket中.

我很感激每一笔进步,谢谢

ruby file-upload ruby-on-rails amazon-s3 paperclip

1
推荐指数
1
解决办法
2090
查看次数

Rails迁移使用paperclip抱怨未定义的方法`attachment"

Lemmie只是说这是我对Rails相当新的一点.

我们的应用程序使用paperclip(3.2.4)来管理附件,像往常一样,我生成了一个类似于以下内容的迁移:

class AddAttachmentPhotoToPhpfoxUsers < ActiveRecord::Migration
  def self.up
    change_table :phpfox_user do |t|
      t.attachment :photo
    end
  end

  def self.down
    drop_attached_file :phpfox_user, :photo
  end
end
Run Code Online (Sandbox Code Playgroud)

(它被称为phpfox_user,因为我们必须在遗留数据库的基础上构建)

这一切都很棒,工作正常.但是,我们还必须管理2个数据库并迁移到它们,因此我根据此帖子上的建议重新安排了迁移:

http://excid3.com/blog/rails-activerecord-multiple-databases-and-migrations

我不知道这应该有多好,但它似乎是一个相当简洁的解决方案,它很好地组织了迁移.

但是现在回形针迁移不起作用,因为找不到附件类型.我假设它不再在范围内或者没有绑定到表对象.有没有人知道我应该做些什么才能把它带进来,我已经尝试过将'paperclip'添加到模块中,但这没有用.

我也试过使用add_attachment助手,但也没找到.

我们使用的是Rails 3.2.13和Ruby 2.0.0.

编辑:错字

ruby ruby-on-rails database-migration paperclip

1
推荐指数
1
解决办法
3428
查看次数

Ruby on Rails多个按钮

我写了以下内容:

<% if @document != nil %>
<%= form_for(@document, :html => { :multipart => true }) do |f| %>
  <% if @document.errors.any? %>
<div id="error_explanation">
  <h2><%= pluralize(@document.errors.count, "error") %> prohibited this document from being saved:</h2>

  <ul>
  <% @document.errors.full_messages.each do |message| %>
    <li><%= message %></li>
  <% end %>
  </ul>
</div>
<% end %>
<% if notice %>
  <p id="notice"><%= notice %></p>
<% end %>
<%= render partial: 'documents/resume' %>
<div id="add_buttons">
  <%= f.file_field :resume %>
  <%= f.submit %>
</div>
<% end …
Run Code Online (Sandbox Code Playgroud)

ruby ruby-on-rails paperclip

1
推荐指数
1
解决办法
65
查看次数

Rails Paperclip文件类型验证 - 添加PDF?

我有验证设置只允许png和jpg,但我也想允许PDF.我似乎无法弄清楚如何将该语法添加到现有代码中.

  has_attached_file :receipt
  # Validate content type
  validates_attachment_content_type :receipt, :content_type => /\Aimage/
  # Validate filename
  validates_attachment_file_name :receipt, :matches => [/png\Z/, /jpe?g\Z/]
Run Code Online (Sandbox Code Playgroud)

谢谢!

ruby-on-rails paperclip

1
推荐指数
1
解决办法
5013
查看次数

生产中的回形针验证问题

在Google Cloud上部署应用程序时出现问题

所含内容与所报告的内容不符

在本地工作正常!我已经尝试使用command_path。所以我真的不知道下一步该怎么做...

这是我的模特

has_mongoid_attached_file  :image,
    :styles => { :large => "380x380!" , :medium => "240x240", :small => "120x120!" },
    :storage => :fog,
    :fog_public => true,
    :fog_directory => 'XXXX',
    :path => "images/:id/:style/:basename.:extension",
    :fog_credentials => {  :provider => 'Google',
                           :google_storage_access_key_id => 'XXXXX',
                           :google_storage_secret_access_key => 'XXXXX'}

  validates_attachment_content_type :image, :content_type => ["image/jpg", "image/jpeg", "image/png", "image/gif"]
Run Code Online (Sandbox Code Playgroud)

感谢你付出的努力。我希望你们能帮助我

ruby google-app-engine ruby-on-rails paperclip paperclip-validation

1
推荐指数
2
解决办法
2363
查看次数