`

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
分享到:
评论

相关推荐

    android webview input=file 失效解决方案

    通过自定义`WebChromeClient`、请求读取权限、实现文件选择器和使用`FileProvider`,可以解决这个问题,使用户能够正常在Webview中上传文件。这些步骤是Android开发者在处理Webview与本地文件交互时必须掌握的关键...

    BLOB和CLOB的区别以及在ORALCE中的插入和查询操作

    3. 处理方式:对BLOB进行操作时,通常涉及二进制文件的读写,例如图片的上传和下载。CLOB操作则更偏向于文本内容的处理,如文本编辑、搜索等。 在Oracle数据库中,插入和查询BLOB和CLOB对象有特定的方法: 1. 插入...

    phpmyadmin上传Webshell总结.docx

    SELECT * FROM &lt;table&gt; WHERE CONCAT('&lt;command&gt;', ' ', &lt;column&gt;) INTO OUTFILE '&lt;file_path&gt;'; ``` 其中,`&lt;command&gt;`是你要执行的系统命令,`&lt;column&gt;`是用于拼接命令的字段。 (2)解决`system()`函数报错...

    asp上传并导入EXCEL文件

    在ASP(Active Server Pages)开发中,经常需要处理文件上传和数据导入的功能,特别是与Excel文件交互时。本文将深入探讨如何使用ASP实现Excel文件的上传,并将其数据导入到Access数据库中。 首先,我们需要理解ASP...

    56、添加文件上传FileManaged类1

    ### Symfony 5中实现文件上传功能 在进行Symfony 5项目的开发过程中,有时我们需要增加文件上传功能以便用户能够上传图片或其他文件与我们进行互动。本文将详细介绍如何在Symfony项目中添加文件上传功能,并通过...

    pyqt5实现文件批量操作

    shutil.copy2(source_file, target_file) # copy2保留文件元数据 ``` 为了将这些功能集成到PyQt5界面中,你需要创建一个窗口,包含必要的控件,如打开Excel文件的按钮、显示进度的标签等。当用户点击按钮时,调用...

    android文件上传及写入数据库

    在Android平台上,文件上传和将数据写入数据库是常见的任务,尤其在开发涉及用户交互的应用时,例如照片分享、文档管理或云同步等场景。本文将深入探讨如何在Android环境中实现这两个功能。 首先,让我们讨论文件...

    citesort.sty

    写LaTeX时遇到报错:LaTeX Error: File `citesort.sty' not found.找到之后上传一下

    jdbcoracle(文件上传)

    在IT行业中,数据库管理和文件上传是两个至关重要的领域。这里我们关注的是`jdbcoracle(文件上传)`,这很可能是指使用JDBC(Java Database Connectivity)来操作Oracle数据库,并实现文件上传的功能。以下是对这个...

    rails_plugins_presentation.pdf

    - **file_column (文件上传)**:此插件简化了文件上传过程,使得在Rails应用中处理文件上传变得更为直观和高效。它支持多种文件类型,并允许你自定义存储选项,如上传位置、文件名生成策略等。 - **acts_as_state_...

    Android 跳转到手机内存中查找文件,并上传

    四、文件上传 文件上传通常涉及HTTP或HTTPS协议,可以使用多种库实现,如OkHttp、Retrofit等。以下是一个使用OkHttp上传文件的示例: ```java File imageFile = new File(picturePath); RequestBody requestBody =...

    基于 thinkphp的一个 批量上传并 csv文件导入数据

    在ThinkPHP中,你可以使用`$_FILES`全局变量来接收上传的文件,然后通过`move_uploaded_file()`函数将文件移动到指定目录,如`public/uploads/`。 接下来是CSV文件的解析。CSV文件的数据以逗号分隔,每一行代表一条...

    java从本地读文件并上传Hbase

    在Java编程环境中,将本地文件读取并上传到HBase是一项常见的任务,特别是在大数据处理和存储的场景下。HBase是一个分布式、版本化的NoSQL数据库,基于Apache Hadoop,适用于大规模数据存储。以下是一个详细的过程,...

    使用Jdbc4操作Blob,Clob

    JDBC4引入了`PreparedStatement`的`setBlob`和`setClob`方法,可以直接接受`InputStream`或`Reader`作为参数,使得上传大文件时无需一次性加载到内存中,有效避免了内存溢出的问题。 以下是一个简单的示例,展示...

    Java解析txt文件到数据库

    这里的`txt_data`是表名,`column1`, `column2`, `column3`等是表的列,可以根据TXT文件中的实际数据结构来调整。 接下来,我们要解析“readTXT.zip”文件。这是一个压缩包,里面包含了一个或多个TXT文件。在Java中...

    使用PyQt5将Excel数据导入mysql

    insert_query = f"INSERT INTO your_table_name (column1, column2, ...) VALUES ('{values[0]}', '{values[1]}', ...)" cursor.execute(insert_query) connection.commit() connection.close() if __name__ =...

    java上传excel并且解析入库

    本篇文章将深入探讨如何实现这个功能,主要涉及的技术包括文件上传、Excel解析以及数据库操作。 首先,我们需要一个文件上传接口。在Java中,可以使用Servlet API或者Spring MVC框架来处理文件上传。用户通过表单...

    java POI 通过MultipartFile删除Excel文件解析写入数据库

    在Web开发中,我们经常需要处理用户上传的文件,MultipartFile是Spring框架提供的一种处理文件上传的接口,它使得我们可以方便地接收和处理上传的Excel文件。下面我们将深入探讨如何使用Java POI和MultipartFile来...

Global site tag (gtag.js) - Google Analytics