`
jbf034
  • 浏览: 152392 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

上传文件(无插件方式)转

阅读更多
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文件上传插件

    总的来说,HTML5文件上传插件如HuploadifyV2.0提供了一种便捷、灵活的方式,帮助开发者在网页应用中实现高效、可控的文件上传功能,增强了用户体验。通过深入理解和使用这类插件,开发者可以更好地应对现代Web应用中...

    php文件上传插件(简洁好用的上传插件)

    - **multipart/form-data编码**:文件上传表单必须使用`multipart/form-data`编码方式。 - **move_uploaded_file()函数**:用于将上传的临时文件移动到服务器上的指定位置。 - **错误处理**:要检查`$_FILES['...

    多文件上传插件

    在IT行业中,多文件上传插件是一个非常实用的工具,特别是在网页或应用程序中处理用户需要批量上传文件的场景。这种插件允许用户一次性选择并上传多个文件,极大地提高了工作效率,减少了用户操作步骤。下面我们将...

    多文件上传插件uploadify

    Uploadify是一款流行的多文件上传插件,它允许用户在网页上批量上传文件,同时具有良好的浏览器兼容性。这个插件对于那些需要在网站上实现高效、便捷文件上传功能的开发者来说,是一个非常实用的工具。在本文中,...

    jquery-大文件上传插件,支持分片上传,断点续传

    6. **文件类型检查**:为了保证上传文件的安全性,插件可以设置上传文件的类型限制,只允许特定类型的文件上传,防止恶意文件的上传。 7. **大小限制**:可以设定最大和最小上传文件大小,防止过大的文件消耗过多...

    文件上传插件,方便前端开发,无bug

    "文件上传插件"是这个领域的解决方案,它使得前端开发者可以方便地集成文件上传功能,而无需深入研究底层实现细节。该插件的主要特点包括多文件选择、拖放操作、进度条显示、文件验证以及预览功能,这极大地方便了...

    Ajax Upload多文件上传插件

    Ajax Upload文件上传插件允许你上传多个插件而无需刷新页面,可以使用任何的元素来显示文件选择窗口。它可以在所有主流的浏览器下工作,从2.0版本开始,不需要任何库运行。Ajax Upload文件上传插件不会污染任何命名...

    ajax异步上传文件插件

    **Ajax异步上传文件插件详解** 在现代Web开发中,用户交互的实时性和流畅性是提升用户体验的关键因素之一。Ajax(Asynchronous JavaScript and XML)技术的出现,使得页面无需刷新即可实现数据的异步更新,极大地...

    PHP多文件上传插件,PHP+jQuery+Ajax多图片上传

    2. **jQuery插件**:例如`jQuery.form.js`或`jQuery.fileupload.js`,它们提供了方便的API来处理多文件上传。这些插件可以监听文件选择事件,创建FormData对象,将文件数据附加到对象中,并通过Ajax发送到服务器。 ...

    基于bootstrap.3的文件上传效果, 可拖拽上传、预览的HTML5文件上传插件.zip

    这个插件允许用户通过拖放操作上传文件,并且在上传前可以预览文件内容,提高了用户体验。 Bootstrap是Twitter推出的一个用于前端开发的开源工具集,它包含CSS、JavaScript和HTML模板,用于快速构建响应式和移动...

    HTML多文件上传插件,可一次上传多个文件.zip

    "使用jQuery插件jQuery.form.js进行ajax提交表单 - ajaxForm.url"指出,可以利用jQuery Form插件(jQuery.form.js)通过Ajax方式提交表单,实现无刷新的文件上传。`ajaxForm()`方法是该插件的核心,它允许异步提交...

    uploadify文件上传插件

    Uploadify是一款广泛应用于Web开发中的JavaScript文件上传插件,它为用户提供了一种高效、便捷的文件上传体验。这款插件以其简洁的API和高度自定义的特性,深受开发者喜爱。在本文中,我们将深入探讨Uploadify的核心...

    图片上传插件,文件上传插件

    "图片上传插件,文件上传插件"这一主题涵盖了多项技术知识点,包括前端开发、后端处理以及用户体验设计。在此,我们将深入探讨这些关键领域的相关知识。 首先,多文件上传是一种允许用户一次性选择并上传多个文件的...

    文件上传插件bootstrap File

    这款插件充分利用了Bootstrap框架的样式,使得文件上传组件与Bootstrap主题保持一致,提供了美观的界面和实用的功能。 在Bootstrap File Input中,主要涉及以下几个关键知识点: 1. **HTML5 File API**: 这是现代...

    asp.net、C#文件上传插件

    本插件就是为了解决这一问题,提供一个方便、高效且用户友好的文件上传解决方案。 文件上传插件的核心功能通常包括以下几点: 1. **多文件选择**:允许用户一次选择多个文件进行上传,提高了用户体验。 2. **...

    ajax文件上传插件,支持拖拽

    因此,在实际应用中,需要考虑到不同浏览器的兼容性,可能需要借助polyfill库或提供替代的上传方式,如传统的点击选择文件按钮。 7. **安全性与性能**: 文件上传还涉及安全问题,如防止跨站脚本攻击(XSS)、文件...

    20+jQuery 文件上传插件或教程.rar

    在本文中,我们将深入探讨jQuery文件上传插件和教程,这些资源对于开发高效、用户友好的Web应用程序至关重要。jQuery是一个强大的JavaScript库,极大地简化了DOM操作、事件处理、动画效果和Ajax交互。在Web开发中,...

    .net js wsfUpload 文件上传插件

    《.NET JS WSFUpload 文件上传插件详解》 在当今的Web开发中,文件上传功能已经成为不可或缺的一部分,尤其在用户交互丰富的应用中。.NET JS WSFUpload是一款高效的文件上传插件,它结合了JavaScript(js)和ASP...

    百度文件上传插件.zip

    "百度文件上传插件"是为了解决这个问题而设计的,它结合了JavaScript(js)、jQuery库,提供了方便、高效且用户体验良好的文件上传解决方案。在本文中,我们将深入探讨这个插件的核心特性、使用方法以及它如何优化...

Global site tag (gtag.js) - Google Analytics