1。Model
我创建了一张表:mysql> describe photos;
+------------+--------------+------+-----+---------------------+---------------
+
| Field | Type | Null | Key | Default | Extra
|
+------------+--------------+------+-----+---------------------+---------------
+
| id | int(11) | NO | PRI | NULL | auto_increment
|
| album_id | int(11) | YES | MUL | 1 |
|
| url | varchar(255) | NO | | NULL |
|
| name | varchar(255) | YES | | NULL |
|
| created_at | datetime | YES | | 0000-00-00 00:00:00 |
|
+------------+--------------+------+-----+---------------------+---------------
generate 一个model:
class Photo < ActiveRecord::Base
end
不需要任何代码,当然也可以添加检查代码:
validates_format_of :url,
:with=>/^.*(.jpg|.JPG|.gif|.GIF)$/,
:message => "你只能上传JPG或则GIF的图片文件"
2。controller
#以下是关于文件上传的代码
before_filter :configure_charsets
def configure_charsets
@headers["Content-Type"]="text/html;charset=utf-8"
end
def upload
end
def upload_file(file)
if !file.original_filename.empty?
@filename=get_file_name(file.original_filename)
File.open("#{RAILS_ROOT}/public/uploads/#{@filename}", "wb") do |f|
f.write(file.read)
end
return @filename
end
end
def get_file_name(filename)
if !filename.nil?
Time.now.strftime("%Y%m%d%H%M%S") + '_' + filename
end
end
def save_file
unless request.get?
if filename=upload_file(params[:file]['file'])
return filename
end
end
end
#==============================
# 修改create方法:
def create
@photo = Photo.new(params[:photo])
@filename=save_file #调用save_file方法,返回文件名
@photo.url="/uploads/#{@filename}" #保存文件路径字段
@photo.name=(@filename)[15,@filename.length] #保存文件名字段
if @photo.save
flash[:notice] = 'Photo was successfully created.'
redirect_to :action => 'list'
else
render :action => 'new'
end
end
3。View
修改:_form.rhtml
Upload your file: <%= file_field("file", "file") %>
修改:new.rhtml
<h1>New photo</h1>
<%= form_tag({:action => 'create'}, :multipart => true) %>
<%= render :partial => 'form' %>
<%= submit_tag("Upload file") %>
<%= end_form_tag %>
修改:show.rhtml
<%= image_tag url_for_file_column("entry", "image") %>
不行的话,用<img src='<%=@photo.url%>'.....
这里,没有用到任何有关文件上传的插件。所以,用起来比较单纯,上传的文件都放在路径/public/uploads/
分享到:
相关推荐
总的来说,HTML5文件上传插件如HuploadifyV2.0提供了一种便捷、灵活的方式,帮助开发者在网页应用中实现高效、可控的文件上传功能,增强了用户体验。通过深入理解和使用这类插件,开发者可以更好地应对现代Web应用中...
- **multipart/form-data编码**:文件上传表单必须使用`multipart/form-data`编码方式。 - **move_uploaded_file()函数**:用于将上传的临时文件移动到服务器上的指定位置。 - **错误处理**:要检查`$_FILES['...
6. **文件类型检查**:为了保证上传文件的安全性,插件可以设置上传文件的类型限制,只允许特定类型的文件上传,防止恶意文件的上传。 7. **大小限制**:可以设定最大和最小上传文件大小,防止过大的文件消耗过多...
在IT行业中,多文件上传插件是一个非常实用的工具,特别是在网页或应用程序中处理用户需要批量上传文件的场景。这种插件允许用户一次性选择并上传多个文件,极大地提高了工作效率,减少了用户操作步骤。下面我们将...
Uploadify是一款流行的多文件上传插件,它允许用户在网页上批量上传文件,同时具有良好的浏览器兼容性。这个插件对于那些需要在网站上实现高效、便捷文件上传功能的开发者来说,是一个非常实用的工具。在本文中,...
"文件上传插件"是这个领域的解决方案,它使得前端开发者可以方便地集成文件上传功能,而无需深入研究底层实现细节。该插件的主要特点包括多文件选择、拖放操作、进度条显示、文件验证以及预览功能,这极大地方便了...
2. **jQuery插件**:例如`jQuery.form.js`或`jQuery.fileupload.js`,它们提供了方便的API来处理多文件上传。这些插件可以监听文件选择事件,创建FormData对象,将文件数据附加到对象中,并通过Ajax发送到服务器。 ...
Ajax Upload文件上传插件允许你上传多个插件而无需刷新页面,可以使用任何的元素来显示文件选择窗口。它可以在所有主流的浏览器下工作,从2.0版本开始,不需要任何库运行。Ajax Upload文件上传插件不会污染任何命名...
**Ajax异步上传文件插件详解** 在现代Web开发中,用户交互的实时性和流畅性是提升用户体验的关键因素之一。Ajax(Asynchronous JavaScript and XML)技术的出现,使得页面无需刷新即可实现数据的异步更新,极大地...
这个插件允许用户通过拖放操作上传文件,并且在上传前可以预览文件内容,提高了用户体验。 Bootstrap是Twitter推出的一个用于前端开发的开源工具集,它包含CSS、JavaScript和HTML模板,用于快速构建响应式和移动...
"使用jQuery插件jQuery.form.js进行ajax提交表单 - ajaxForm.url"指出,可以利用jQuery Form插件(jQuery.form.js)通过Ajax方式提交表单,实现无刷新的文件上传。`ajaxForm()`方法是该插件的核心,它允许异步提交...
Uploadify是一款广泛应用于Web开发中的JavaScript文件上传插件,它为用户提供了一种高效、便捷的文件上传体验。这款插件以其简洁的API和高度自定义的特性,深受开发者喜爱。在本文中,我们将深入探讨Uploadify的核心...
"图片上传插件,文件上传插件"这一主题涵盖了多项技术知识点,包括前端开发、后端处理以及用户体验设计。在此,我们将深入探讨这些关键领域的相关知识。 首先,多文件上传是一种允许用户一次性选择并上传多个文件的...
这款插件充分利用了Bootstrap框架的样式,使得文件上传组件与Bootstrap主题保持一致,提供了美观的界面和实用的功能。 在Bootstrap File Input中,主要涉及以下几个关键知识点: 1. **HTML5 File API**: 这是现代...
本插件就是为了解决这一问题,提供一个方便、高效且用户友好的文件上传解决方案。 文件上传插件的核心功能通常包括以下几点: 1. **多文件选择**:允许用户一次选择多个文件进行上传,提高了用户体验。 2. **...
因此,在实际应用中,需要考虑到不同浏览器的兼容性,可能需要借助polyfill库或提供替代的上传方式,如传统的点击选择文件按钮。 7. **安全性与性能**: 文件上传还涉及安全问题,如防止跨站脚本攻击(XSS)、文件...
在本文中,我们将深入探讨jQuery文件上传插件和教程,这些资源对于开发高效、用户友好的Web应用程序至关重要。jQuery是一个强大的JavaScript库,极大地简化了DOM操作、事件处理、动画效果和Ajax交互。在Web开发中,...
《.NET JS WSFUpload 文件上传插件详解》 在当今的Web开发中,文件上传功能已经成为不可或缺的一部分,尤其在用户交互丰富的应用中。.NET JS WSFUpload是一款高效的文件上传插件,它结合了JavaScript(js)和ASP...
"百度文件上传插件"是为了解决这个问题而设计的,它结合了JavaScript(js)、jQuery库,提供了方便、高效且用户体验良好的文件上传解决方案。在本文中,我们将深入探讨这个插件的核心特性、使用方法以及它如何优化...