file_column文件上传

参考了下"rails漫步"的日志,自己也实践了下,下面的问题差不多都遇到了,为此记录下:

1.下载,安装:

a.命令安装:ruby script/plugin install http://opensvn.csie.org/rails_file_column/plugins/file_column/trunk

b.直接安装:把压缩包解压到/vender/plugins/file_column文件夹下即可完成安装(file-column-0.3.1.tar.gz)(我采用的方式)

2.使用方法 :

a.ruby script/generate scaffold entry image:string
b.在Model中,加入
class Entry < ActiveRecord::Base
file_column :image
end
1).Rails2.3安装该插件,报错如下:
uninitializedconstant FileColumn::ClassMethods::Inflector
解决办法:找到 \plugins\file_column\lib\file_column.rb
找到如下代码:
my_options = FileColumn::init_options(options, Inflector.underscore(self.name).to_s, attr.to_s)
修改为:
my_options = FileColumn::init_options(options, ActiveSupport::Inflector.underscore(self.name).to_s, attr.to_s)

2).file_column上传大写后缀名文件报错的解决办法

编辑file_column.rb文件
把:FileUtils.mv(local_file_path, new_local_file_path) unless new_local_file_path == local_file_path

修改成:FileUtils.mv(local_file_path, new_local_file_path) unless new_local_file_path.downcase == local_file_path.downcase

3).file_column上传中文文件名的文件时,汉字变成“_”的解决办法
注释掉file_column.rb文件 把方法 self.sanitize_filename(filename)中的 filename.gsub!(/[^a-zA-Z0-9\.\-\+_]/,"_")
但有的中文就会发生Invalid argument - ./public/entry/image/tmp/的错误。

整理一下,关于File_column+RMagick实际应用中的一些小技巧:
仅允许上传图片:

在类文件中的声明:
file_column :image, :magick => {
:attributes => { :format => ‘jpg’ },
:crop => ‘1:1′,
:versions => { “medium” => “120×120>” , “thumb” => “50×50″}
}

4.页面上使用url_for_file_column显示图片时报错

在页面时使用url_for_file_column helper方法显示图片时报“undefined method `relative_url_root' for #”错误,在网上找个下原因,将

file_column_helper.rb中" url << @request.relative_url_root.to_s << "/" ”改为“url << ActionController::Base.relative_url_root.to_s << "/" "就可以了”,还不清楚为什么。


“thumb” => “50×50″ : 表示如果宽度大则宽度为50如果高度大则高度为50,
“thumb” => “50×50!” : “!”表示强制50*50
“thumb” => “50×50>” : “>”表示如果图片本来就小,就不用放大
“thumb” => “50x>” : 默认宽度为50,高度自适应

Processing EntriesController#create (for 127.0.0.1 at 2011-02-28 18:13:52) [POST]
Parameters: {"commit"=>"Create", "authenticity_token"=>"68zeIrxBMEozxKGyd03LPTt+HpIfDf0yoHhihVCmC7A=", "entry"=>{"image_temp"=>"", "image"=>#<File:C:/Users/FYT~1.SAF/AppData/Local/Temp/RackMultipart.4980.0>}}
Entry Columns (4.0ms) SHOW FIELDS FROM `entries`
SQL (1.0ms) BEGIN
Entry Create (1.0ms) INSERT INTO `entries` (`updated_at`, `image`, `created_at`) VALUES('2011-02-28 10:13:52', '___3.jpg', '2011-02-28 10:13:52')
SQL (35.0ms) COMMIT
Redirected to http://localhost:3000/entries/6

Processing EntriesController#create (for 127.0.0.1 at 2011-03-01 13:13:15) [POST]
Parameters: {"commit"=>"Create", "authenticity_token"=>"tK+oWZmp5psq59wGqUmcEMYxS2Uj5cfkwwubrP+Lixs=", "entry"=>{"image_temp"=>"1298956337.684000.3488/rails.png", "image"=>#<File:C:/Users/FYT~1.SAF/AppData/Local/Temp/RackMultipart.3488.1>}}

require 'action_controller'
=> []
require 'action_controller/test_process.rb'
=> []
ActionController::TestUploadedFile.new("#{RAILS_ROOT}/public/images/rails.png", 'image/png', false)
=> #<ActionController::TestUploadedFile:0x641a0f4 @content_type="image/png", @original_filename="rails.png", @tempfile=#<File:C:/Users/FYT~1.SAF/AppData/Local/Temp/rails.png.3160.0>>

Tempfile.new("rails.png")
=> #<File:C:/Users/FYT~1.SAF/AppData/Local/Temp/rails.png.3160.1>
Processing A::PhotosController#create (for 127.0.0.1 at 2011-03-01 14:39:03) [POST]
Parameters: {"public"=>"true", "uploaded_data"=>#<File:C:/Users/FYT~1.SAF/AppData/Local/Temp/RackMultipart1440-3>}
User Columns (6.0ms) SHOW FIELDS FROM `users`
User Load (1.0ms) SELECT * FROM `users` WHERE (`users`.`id` = 2) LIMIT 1
------#<File:C:/Users/FYT~1.SAF/AppData/Local/Temp/RackMultipart1440-3>---------------------------!!
------C:/Users/FYT~1.SAF/AppData/Local/Temp/RackMultipart1440-3---------------------------!!
------#<ActionController::TestUploadedFile:0x119235f4 @tempfile=#<File:C:/Users/FYT~1.SAF/AppData/Local/Temp/RackMultipart1440-31440-0>, @content_type="image/jpg", @original_filename="RackMultipart1440-3">-------------



参考地址:http://hi.baidu.com/kenrome/blog/item/dedd2f97bec8836554fb9674.html

http://hi.baidu.com/kenrome/blog/item/f40c5de747c8ad2db9382099.html

http://airport.iteye.com/blog/33216
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值