RMagick和ruby-debug-ide还是没有安装成功,郁闷啊。
Rails的文件上传说起来还是很容易实现的,相比来说java的文件上传那是一个麻烦啊。
controller如下:
#coding:utf-8
class ImageController < ApplicationController
def index
render :action => "img"
end
def new
if request.post?
img = params["img"]
if !img.nil? and img.size>0
@path = move_file(img)
# logger.debug "the size is #{img.size}"
else
@path = "rails.png"
end
end
render :action => "img"
end
def move_file(file)
#取得上传的文件名
@name = change_charset(File.basename(file.original_filename))
#使用当前经过的秒数加上源文件后缀名,作为保存的新名称。
save_name = change_charset(Time.new.to_i.to_s+"."+@name.split(".")[1])
#保存图片的绝对路径
path = "#{RAILS_ROOT}/public/images/#{save_name}"
File.open(path, "wb") do |f|
f.write(file.read)
end
return save_name
end
#用于转码,从表单取得的数据是使用ASCII-8BIT编码的。汗...
def change_charset(str)
if str.kind_of?(String)
return str.force_encoding("utf-8")
end
return str
end
end
rhtml如下:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<base href="/"/>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
</head>
<body>
<% form_tag('/image/new',:multipart=>true) do -%>
上传的图片:<%= file_field_tag "img" %>
<p />
<%= submit_tag "提交图片" %>
<% end -%>
<p />
上传的图片为:
<img alt="" title="<%=@name%>" src="/images/<%=@path%>" />
</body>
</html>
这期间遇到两个问题:
1.表单提交的的数据在后台取出后竟然是ASCII-8BIT的格式,这个有点迷惑。。。
2.图片的src为 images/xxxxxx时,图片无法显示。但改为/images/xxxxxx后图片又正常显示。
分享到:
相关推荐
在Ruby on Rails框架中,Paperclip是一个非常流行的用于处理文件上传的库。它提供了一种简单而优雅的方式来管理和处理模型中的附件,如图片、文档等。Paperclip与ActiveRecord紧密集成,使得在Rails应用中添加文件...
Rails 多文件上传插件实现详解 Rails 多文件上传插件是基于 Ruby on Rails 框架的一款插件,旨在实现多文件的同时上传,控制文件的格式、数量,并且兼容多种浏览器,包括 IE6、7、Firefox 等。下面是对插件的详细...
本篇文章将深入探讨Rails中的文件上传机制,并结合给定的“rails 文件上传”主题,提供关于如何在Rails应用中实现文件上传的详细知识。 1. **ActionDispatch::Http::UploadedFile**: 当用户通过表单上传文件时,...
在Ruby on Rails框架中,文件上传是一个常见的需求,特别是在应用的升级过程中,处理文件上传的策略可能会有所变化。Rails提供了多种处理文件上传的方法,包括直接存储到本地文件系统、使用云存储服务(如Amazon S3...
这里我们假设使用jQuery,配合jQuery File Upload插件,它提供了一个简单的API来处理文件上传和进度事件。 1. **安装jQuery和jQuery File Upload** 在`Gemfile`中添加`jquery-rails` gem,然后运行`bundle install...
这个“Rails项目源代码”是一个使用Rails构建的图片分享网站的完整源代码,它揭示了如何利用Rails的强大功能来创建一个允许用户上传、分享和浏览图片的应用。 1. **Rails框架基础**: Rails的核心理念是DRY(Don't...
Rails支持处理文件上传,通常通过`Paperclip`或`Carrierwave`这样的第三方库实现。这些库提供了方便的接口,可以方便地将文件关联到模型,并在视图中展示下载链接。项目中可能使用了类似的库来处理报告的上传和下载...
在这个场景中,我们关注的是Rails的自动完成、文件上传、分页以及上传进度管理相关的插件。让我们详细了解一下这些关键知识点: 1. **Rails 自动完成**: 自动完成是一种功能,允许用户在输入框中键入时提供预填...
Ruby-CarrierWave 是一个流行的文件上传库,专为Ruby Web框架如Rails和Sinatra设计,旨在提供一种更优雅、更灵活的方式来处理文件上传。它弥补了Ruby标准库在处理文件上传时的不足,提供了丰富的功能和易于定制的...
第九章讨论了 **文件上传** 的实现方式,这是 Web 应用中常见的功能之一。 - **文件上传**: - 实现用户可以上传图片、文档等文件的功能。 - 需要考虑安全性问题,防止恶意文件上传。 - 可以使用第三方服务,如 ...
- **上传文件**:介绍如何处理文件上传操作。 - **定制表单生成器**:解释如何创建自定义的表单生成器。 - **理解参数命名约定**:解释表单提交时参数的命名规则。 - **处理外部资源的表单**:指导如何处理来自外部...
10. **Gem包管理**:Ruby的Gem系统使得安装和管理第三方库变得简单,如Devise用于用户认证,Paperclip或Carrierwave处理文件上传,Bootstrap提供前端UI组件等。 学习Rails的过程中,实践尤为重要。通过完成实际项目...
jack_up, 在 Rails 中,[DEPRECATED] 轻松AJAX文件上传 从October年8 月开始,已经不推荐使用 另外,对于其他的, 付费和免费的上传工具,JackUp已经被否决了。 JackUp简单AJAX文件在 Rails 中上传。安装修改你的...
Ruby-Attache是一个用于处理文件上传的库,它为开发者提供了简单、安全的方式来管理应用程序中的文件上传功能。在Ruby世界中,Attache旨在提供一种优雅的API,使得开发者能够轻松集成文件上传到他们的Web应用中,...
- **测试文件上传**:对于涉及文件上传的功能,需要编写专门的测试来验证其行为。 - **测试时间**:由于应用可能依赖于时间计算,因此需要测试与时间相关的功能。 - **测试Web服务**:如果应用与其他Web服务进行交互...
在实际开发中,还可以利用各种 Gems(Ruby 社区的库)扩展功能,如 Devise 用于用户认证,Bootstrap 提供响应式布局,以及 Paperclip 或 Carrierwave 处理文件上传等。 通过这个入门例子,你将了解 Rails 的基本...
5. **使用gem**:Rails社区有大量优秀的gem,如Devise用于用户认证,CanCanCan进行权限控制,Carrierwave或Paperclip处理上传等。合理选择和使用gem可以快速实现功能,同时注意版本管理和gem的更新。 6. **测试驱动...
在实际开发中,你还可以结合其他工具和库,例如使用 ActiveStorage(Rails 5.2 引入的存储服务)处理文件上传,或者利用 ActionCable 实现编辑器内容的实时预览。总的来说,`rails_kindeditor` 插件是 Ruby on Rails...
RoR社区活跃,有许多优秀的gem(RoR的扩展库)可供使用,例如Devise用于用户认证,CanCanCan进行权限控制,Carrierwave或Paperclip处理文件上传,Bootstrap gems帮助快速构建响应式界面等。这些gem极大地扩展了RoR的...