ruby -- 进阶学习(四)paperclip上传中文命名图片
Paperclip -- 上传中文命名图片
使用Paperclip和ImageMagick插件来处理图片的时候,上传非中文命名的图片时,只要把配置写好就没问题
if you need to add image attachments to a model? See how with paperclip in this episode
创建model方法可以借鉴 :http://www.cnblogs.com/lmei/p/3231268.html
在model中进行配置
# 简单例子 models/swipephoto.rb
class Swipephoto < ActiveRecord::Base
attr_accessible :user_id , :photo
AVATAR_NW = 640
AVATAR_NH = 320 Paperclip.interpolates :user_id do |a,s|
a.instance.user_id
end has_attached_file :photo,
:styles => { :normal => ["#{AVATAR_NW}x#{AVATAR_NH}#", :jpg] },
:url => "/assets/:user_id/swipephotos/:basename.:extension",
:path => ":rails_root/public/assets/:user_id/swipephotos/:basename.:extension" validates_attachment_presence :photo
validates_attachment_size :photo, :less_than => 5.megabytes
validates_attachment_content_type :photo, :content_type => ['image/jpeg', 'image/pjpeg', 'image/jpg', 'image/png'] end
修改view
# view/swipephotos/index
<% @swipephotos.each do |swipephoto| %>
……
<%= image_tag swipephoto.photo.url(:normal) , {"style" => "width:450px"} %>
……
<% end %>
其他修改就不详细写了~~
以上配置方法,上传非中文名的图片的时候没问题,但是当上传中文命名图片时,报错:Paperclip::NotIdentifiedByImageMagickError
这是因为ImageMagick插件无法处理中文命名图片
解决方法,就是点击上传图片后,对图片名进行重命名,下面是将图片名重命名为时间戳+随机数
# controllers/swipephoto.rb
# 对图片重命名要在new一个新的对象之前,不然会报错
# 在new一个新对象前,加上下面两句,根据具体数据类型进行修改,下面是strong Parameter类型
extension = File.extname( swipephoto_params.require(:photo).original_filename).downcase
swipephoto_params.require(:photo).original_filename = Time.now.strftime("%Y%m%d%H%M%S")+rand(10000).to_s+extension
附 : 关于strong parameters:http://www.cnblogs.com/lmei/p/3231330.html
这样就可以顺利上传和保存中文命名图片啦!@_@!!
ruby -- 进阶学习(四)paperclip上传中文命名图片的更多相关文章
- drupal 7.23 上传中文命名文件bug
$file->filename = trim(drupal_basename($_FILES['files']['name'][$source]), '.'); //在此行下 添加以下代码即可( ...
- ruby -- 进阶学习(五)使用Ckeditor插件上传中文图片
基于rails4.0环境 当使用Ckeditor上传中文命名图片时报错,解决方法是对图片进行重命名 在Ckeditor插件的安装目录下找到controllers/.../application.rb ...
- dropzonejs中文翻译手册 DropzoneJS是一个提供文件拖拽上传并且提供图片预览的开源类库.
http://wxb.github.io/dropzonejs.com.zh-CN/dropzonezh-CN/ 由于项目需要,完成一个web的图片拖拽上传,也就顺便学习和了解了一下前端的比较新的技术 ...
- ueditor 1.4.3 gbk asp 上传中文乱码 终极解决方法 ie6 ie8 也适用
[摘要:百度编纂器1.43 gbk asp 题目 1.firefox3.0下 单图上传 面没有了 面多图上传 中央的蓝色按钮(即 面击挑选图片)没有表现(附件上传出那个题目) 没有晓得我的水狐吃翔了 ...
- MVC&WebForm对照学习:文件上传(以图片为例)
原文 http://www.tuicool.com/articles/myM7fe 主题 HTMLMVC模式Asp.net 博客园::首页:: :: :: ::管理 5 Posts :: 0 ...
- Android 关于HttpClient上传中文乱码的解决办法
使用过HttpClient的人都知道可以通过addTextBody方法来添加要上传的文本信息,但是,如果要上传中文的话,或还有中文名称的文件会出现乱码的问题,解决办法其实很简单: 第一步:设置Mult ...
- ASP无惧上传类不能上传中文双引号文件及ASP函数InStr存在bug
ASP无惧上传类不能上传中文双引号文件及ASP函数InStr存在bug 近日发现eWebEditor V2.8 asp 版本上传文件文件名不能包含中文双引号,发现eWebEditor使用ASP“无惧上 ...
- PHP 中move_uploaded_file 上传中文文件名失败
项目需要上传文件名保持不变,发现上传中文失败:错误如下: move_uploaded_file(public/upload/files//-/\开密二次开发.rar): failed to open ...
- 关于HttpClient上传中文乱码的解决办法
使用过HttpClient的人都知道可以通过addTextBody方法来添加要上传的文本信息,但是,如果要上传中文的话,或还有中文名称的文件会出现乱码的问题,解决办法其实很简单: 第一步:设置Mult ...
随机推荐
- Python错误、调试和测试
try: print('try...') r = 10 / int('a') print('result:', r) except ValueError as e: print('ValueError ...
- jquery读取XML 生成页面文件
$.get("../../js/data.xml", function (xml) { $(xml).find("local").each(function ( ...
- Hibernate入门5持久化对象关系和批量处理技术
Hibernate入门5持久化对象关系和批量处理技术 20131128 代码下载 链接: http://pan.baidu.com/s/1Ccuup 密码: vqlv 前言: 前面学习了Hiberna ...
- android: 使用通知
8.1 使用通知 通知(Notification)是 Android 系统中比较有特色的一个功能,当某个应用程序希望向 用户发出一些提示信息,而该应用程序又不在前台运行时,就可以借助通知来实现.发 ...
- Bootstrap3.0入门学习系列规划[持续更新]
详情请看http://aehyok.com/Blog/Detail/5.html 个人网站地址:aehyok.com QQ 技术群号:206058845,验证码为:aehyok 本文文章链接:http ...
- Speech两种使用方法
COM组件使用speech: public class Speach { private static Speach _Instance = null ; private SpeechLib.SpVo ...
- Entity Framework Code First迁移基本面拾遗
项目中用到了EF Code First和迁移,但发现有些方面似懂非懂.比如:如何在迁移文件中控制迁移过程?如果在迁移文件中执行SQL语句?如何使用Update-Database的其它参数?数据库在生产 ...
- spring整合activemq发送MQ消息[queue模式]实例
queue类型消息 pom依赖 <dependency> <groupId>junit</groupId> <artifactId>junit</ ...
- HDU 5914 Triangle 数学找规律
Triangle 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=5914 Description Mr. Frog has n sticks, who ...
- Android Studio开发入门-引用jar及so文件
作者:王先荣 最近初学安卓开发,因为以前从未用过JAVA,连基本的语法都要从头开始,所以不太顺利.在尝试使用百度语音识别引擎时遇到了如何引用jar及so文件的问题.在GOOGLE加多次尝试之后, ...