`
ziyoujiedao
  • 浏览: 40318 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

rails实现多文件的上传

    博客分类:
  • ROR
阅读更多
实现把文件上传到服务器,文件名/文件大小/文件的描述   上传到数据库


Application.rb代码如下:
# Filters added to this controller apply to all controllers in the application.

# Likewise, all the methods added will be available for all controllers.

 

class ApplicationController < ActionController::Base

  # Pick a unique cookie name to distinguish our session data from others'

  session :session_key => '_uploadF_session_id'    

   

  def uploadFile(file)

     if !file.original_filename.empty?

      @filename=getFileName(file.original_filename)

      File.open("#{RAILS_ROOT}/public/files/#{@filename}", "wb") do |f|

      f.write(file.read)

      end

     return @filename 

    end

  end

 

  def getFileName(filename)  

     if !filename.nil?  

        return filename

     end     

  end

  

  def savefiles(file,description)

    @filename=getFileName(file.original_filename)

    @filesize=getFileName(file.length)

    @uploadfile = Uploadfile.new

    @uploadfile.filename=@filename

    @uploadfile.filesize=@filesize/1024

    @uploadfile.description=description

    @uploadfile.save

  end  

end


upload_controller.rb代码如下:
class UploadController < ApplicationController

 def upload

   @uploadfile = Uploadfile.new

   unless request.get?  

     i=params[:file].size

     for num in (0..i-1)

      if  filename=uploadFile(params[:file][num])

      savefiles(params[:file][num],params[:uploadfile][num])

      end

     end

   end

   end

end

  


upload.rhtml代码:
<script language="javascript">

HTMLElement.prototype.insertAdjacentHTML=function(where, html)

{

  var e=this.ownerDocument.createRange();

  e.setStartBefore(this);

  e=e.createContextualFragment(html);

  switch (where)

  {

    case 'beforeBegin': this.parentNode.insertBefore(e, this);break;

    case 'afterBegin': this.insertBefore(e, this.firstChild); break;

    case 'beforeEnd': this.appendChild(e); break;

    case 'afterEnd':

      if(!this.nextSibling) this.parentNode.appendChild(e);

      else this.parentNode.insertBefore(e, this.nextSibling); break;

  }

}

function addText()       {

    var str ='<input id="file1" name="file[]" size="30" type="file" /></br> <input type="text" id="uploadfile_description" name="uploadfile[]"></br>';            

    document.getElementById('MyFile').insertAdjacentHTML("beforeEnd",str);    

}

</script> 

<%=start_form_tag ({:action=>"upload"},:multipart=>true )%>

  <div id="MyFile">

    <input id="file" name="file[]" size="30" type="file" /></br>

    <input type="text" id="uploadfile_description" name="uploadfile[]"></br>

  </div>

  <input type="button" value="add" onclick="addText()"/>

  <input style="cursor:pointer" type="submit" value="upload"/>

<%=end_form_tag%>
1
0
分享到:
评论

相关推荐

    rails_多文件上传

    可实现多文件的同时上传,控制文件的格式,数量,同时兼容IE6,7,firefox,易于扩展

    rails-uploader:用jQuery-File-Upload实现Rails文件上传

    用于RailsHTML5文件上传器这个gem使用来上传文件。安装在Gemfile中: gem 'rails-uploader'在航线上: mount Uploader :: Engine =&gt; '/uploader' 迁移ActiveRecord: $ bundle exec rails g uploader:install用法...

    itemizer:具有AJAX文件上传功能的Rails + AngularJS脚手架应用程序

    )测验规格必须使用一个Item模型来实现一个项目,该模型具有2个字段:名称和图片(图片文件)。 所有操作应在一页上进行,而无需重新加载该页。 该页面最初显示所有项目(项目)的列表,并具有更改或删除(带有确认...

    s3-multipart-stream:使用流 2 和并发块上传快速可写流到 Amazon S3 的 Multipart API

    s3-multipart-stream 使用分段上传 API 将文件上传到 Amazon S3。 它通过将流分成块并同时将这些块上传到 S3 来上传流。 块大小和最大并发上传计数可通过选项哈希进行配置。 每个块上传都记录在一个工作文件中,其...

    s3_relay:直接上传到S3并由您的Rails应用提取

    启用直接文件上传到Amazon S3的功能,并为Rails应用程序提供灵活的模式以异步提取文件。 注意:如果您使用的是Rails 5.2+,则应考虑迁移到Active Storage,因为Rails 6+不会支持此gem。 概述 通过此Rails引擎,您...

    jQuery File Upload文件上传插件-其他

    jQuery File Upload 是一个 jQuery 图片上传组件,支持多文件上传、取消、删除,上传前缩略图预览、列表显示图片大小,支持上传进度条显示;支持各种动态语言开发的服务器端。 特征: 1、多文件上传: 允许一次选择...

    rich:固执己见的CKEditor编辑器,用于Rails,具有灵活的图像上传功能

    丰富 Rich是CKEditor for Rails 3.2及更高版本的可靠实现。 它包括一个简化的工具栏,简化的对话框和一个自定义文件管理器。 文件管理器也可以与CKEditor分开使用。 目前,Rich与Active Admin,Rails Admin和Vanilla...

    canvas_resize_sample:使用 Javascript canvasResize 插件和回形针 (https) 的示例 Rails 应用程序

    这是一个示例 Rails 应用程序,它使用 Javascript canvasResize 插件和回形针 ( ) 来演示如何在上传前实现文件大小调整。 如何在您的项目中实施 要在您的项目中实现“上传前调整文件大小”,请按照以下步骤操作。 ...

    carrierwave_direct:通过直接上传到S3在后台处理您的上传

    载波直接 是从Ruby应用程序上传文件的好方法,但是... 如果要同时上传多个文件,则必须使用JavaScript或Flash上​​传器。安装安装最新版本: gem install carrierwave_direct 在Rails中,将其添加到您的Gemfile中:

    JAVA上百实例源码以及开源项目

    5个目标文件,演示Address EJB的实现,创建一个EJB测试客户端,得到名字上下文,查询jndi名,通过强制转型得到Home接口,getInitialContext()函数返回一个经过初始化的上下文,用client的getHome()函数调用Home接口...

    playme-rails:在 Maynard Landrito 先生和 Art Caronongan 先生的指导下为 PROFSWD S18 创建的音乐播放器 Rails 应用程序

    此实现包含以下功能: 将音频文件上传到 Rails 服务器通过使用播放列表管理音频文件播放列表管理(即编辑名称、删除) 音频播放通过拖放重新排列播放队列这是使用以下方法实现的: HTML5 CSS3 JavaScript jQuery ( ...

    JAVA上百实例源码以及开源项目源代码

    5个目标文件,演示Address EJB的实现,创建一个EJB测试客户端,得到名字上下文,查询jndi名,通过强制转型得到Home接口,getInitialContext()函数返回一个经过初始化的上下文,用client的getHome()函数调用Home接口...

    stratus-sound:使用Ruby on Rails,React.js和Redux构建的单页音乐流Web应用程序

    它使用Ruby on Rails,后端使用PostgreSQL数据库,前端使用React.js和Redux。 特征 使用RESTful API上传,编辑,删除和查看曲目 创建歌曲并将其添加到播放列表 连续播放曲目 评论曲目 查看每个曲目的播放计数 搜索...

    java开源包3

    Java文件上传组件 COS FAT文件系统读写类库 fat32-lib fat32-lib 是一个用来读写 FAT 16/32 格式文件系统的纯 Java 类库(纯的)。 Eclipse的HTML格式化插件 Eclipse Tidy Eclipse HTML Tidy 是一款 Eclipse 的...

    java开源包4

    Java文件上传组件 COS FAT文件系统读写类库 fat32-lib fat32-lib 是一个用来读写 FAT 16/32 格式文件系统的纯 Java 类库(纯的)。 Eclipse的HTML格式化插件 Eclipse Tidy Eclipse HTML Tidy 是一款 Eclipse 的...

    capdash2-server:住房容量仪表板v2的Web后端

    容量仪表板2.0 有关背景信息和设置开发先决条件的详细指南,请参见 。 Capdash2服务器基于Ruby on Rails 5 API ...处理用户头像的文件上传 与载波配合使用的小型magick图像处理器 码文件生成器 依存关系 Po

    java8集合源码-Top-Java:顶级视觉Github项目

    java8集合源码顶级 ...支持跨域、分块和可续传的文件上传。 适用于任何支持标准 HTML 表单文件上传的服务器端平台(Google App Engine、PHP、Python、Ruby on Rails、Java 等)。 JavaScript 28459 769

    java开源包1

    Java文件上传组件 COS FAT文件系统读写类库 fat32-lib fat32-lib 是一个用来读写 FAT 16/32 格式文件系统的纯 Java 类库(纯的)。 Eclipse的HTML格式化插件 Eclipse Tidy Eclipse HTML Tidy 是一款 Eclipse 的...

    ASP EXCEL导入SQL

    静态资源主要是指应用层中展现层中所要使用到的静态资源文件,以及由用户在业务操作中产生的文件等,如图片、上传的文件等;  而动态数据是指用户在使用平台的过程中所产生的业务数据,在实现业务中,这部分数据大...

Global site tag (gtag.js) - Google Analytics