`
ziyoujiedao
  • 浏览: 41006 次
  • 性别: 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_多文件上传

    5. 文件上传进度:插件使用 JavaScript 代码实现文件上传进度的显示,当文件上传时,会显示上传进度条,直到文件上传完成。 使用示例 以下是一个简单的使用示例: ```html 要提交的路径" method="post" enctype=...

    rails 文件上传

    本篇文章将深入探讨Rails中的文件上传机制,并结合给定的“rails 文件上传”主题,提供关于如何在Rails应用中实现文件上传的详细知识。 1. **ActionDispatch::Http::UploadedFile**: 当用户通过表单上传文件时,...

    Rails里给文件上传添加progress_bar

    通过以上步骤,你可以在Rails应用中实现一个基本的文件上传进度条功能。这个功能不仅提升了用户体验,还能帮助用户了解文件上传的状态,避免了因为不确定的等待时间而产生的焦虑感。在实际项目中,你还可以根据需求...

    rails ajax提交文件或图片

    通过这种方式,我们可以实现无刷新的文件上传,同时保持页面的互动性和用户体验。当然,实际应用中可能还需要考虑错误处理、文件大小限制、文件类型验证等其他细节。在开发过程中,利用`source code`和`tools`来调试...

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

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

    rails 多图上传.txt

    在实现Rails应用中的多图上传功能时,通常需要借助于特定的插件或Gem来简化开发流程并增强功能。以下两个工具是必不可少的: 1. **Paperclip(Gem)** - **用途**:用于后台文件处理,是一款非常强大的工具,支持...

    使用Rails上传和转换视频

    在Rails中,最常用的文件上传库是Paperclip和CarrierWave,但现在更推荐使用ActiveStorage,这是Rails 5.2及更高版本内置的一个功能。ActiveStorage直接与数据库交互,方便管理和存储文件,同时支持通过第三方服务如...

    多文件上传功能

    - 后端可以使用如Django、Ruby on Rails、Node.js等框架提供的文件上传中间件。 综上所述,多文件上传功能涉及到前端与后端的紧密结合,包括文件选择、预览、上传、存储、安全控制等多个环节。理解并熟练掌握这些...

    Rails实现的简历系统

    ActiveStorage与云存储服务如Amazon S3或Google Cloud Storage集成,方便地处理文件上传、存储和检索。它还提供了一套内置的图像处理工具,如thumbnail生成,以适应不同的展示需求。 3. **验证码生成**:为了防止...

    Ruby-CarrierWaveRubyWeb框架更优雅的解决方案文件上传

    Ruby-CarrierWave 是一个流行的文件上传库,专为Ruby Web框架如Rails和Sinatra设计,旨在提供一种更优雅、更灵活的方式来处理文件上传。它弥补了Ruby标准库在处理文件上传时的不足,提供了丰富的功能和易于定制的...

    ruby上传文件

    综上所述,这个项目提供了实现文件上传功能的实例,包括前端表单设计、后端控制器逻辑、数据库交互以及可能的文件处理和验证。开发者可以根据自身需求,对提供的代码进行扩展或调整,以适应自己的应用程序。

    ROR 文件的上传与下载

    ### ROR 文件的上传与下载:深入解析与...以上就是基于Ruby on Rails实现文件上传与下载功能的完整流程。通过合理的数据库设计、视图构建、控制器逻辑和模型处理,可以有效管理应用程序中的文件资源,提升用户体验。

    基于jQuery的File Upload功能丰富的文件上传设计源码

    该项目是一款基于jQuery实现的丰富功能文件上传设计源码,包含59个文件,涵盖23个JavaScript文件、5个CSS文件、4个HTML文件等多种类型。支持多文件选择、拖放上传、进度条显示、文件验证与预览,并集成了音频、视频...

    Rails的自动完成分页插件

    在这个场景中,我们关注的是Rails的自动完成、文件上传、分页以及上传进度管理相关的插件。让我们详细了解一下这些关键知识点: 1. **Rails 自动完成**: 自动完成是一种功能,允许用户在输入框中键入时提供预填...

    Ruby-attache一个文件上传方式

    接着,可以创建一个文件上传的实例并实现相关的操作: ```ruby class AttachmentsController def create @attachment = Attache::File.new(params[:file]) if @attachment.save render json: { url: @...

    Rails项目源代码

    这个“Rails项目源代码”是一个使用Rails构建的图片分享网站的完整源代码,它揭示了如何利用Rails的强大功能来创建一个允许用户上传、分享和浏览图片的应用。 1. **Rails框架基础**: Rails的核心理念是DRY(Don't...

    Advanced Rails

    7. **Rails插件与Gem**:Rails社区提供了丰富的插件和Gem,如Devise用于身份验证,Paperclip或Carrierwave处理文件上传,Resque或Sidekiq实现后台任务队列。掌握如何选择和使用这些工具来扩展应用功能。 8. **Rails...

Global site tag (gtag.js) - Google Analytics