实现把文件上传到服务器,文件名/文件大小/文件的描述 上传到数据库
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%>
分享到:
相关推荐
5. 文件上传进度:插件使用 JavaScript 代码实现文件上传进度的显示,当文件上传时,会显示上传进度条,直到文件上传完成。 使用示例 以下是一个简单的使用示例: ```html 要提交的路径" method="post" enctype=...
本篇文章将深入探讨Rails中的文件上传机制,并结合给定的“rails 文件上传”主题,提供关于如何在Rails应用中实现文件上传的详细知识。 1. **ActionDispatch::Http::UploadedFile**: 当用户通过表单上传文件时,...
通过以上步骤,你可以在Rails应用中实现一个基本的文件上传进度条功能。这个功能不仅提升了用户体验,还能帮助用户了解文件上传的状态,避免了因为不确定的等待时间而产生的焦虑感。在实际项目中,你还可以根据需求...
通过这种方式,我们可以实现无刷新的文件上传,同时保持页面的互动性和用户体验。当然,实际应用中可能还需要考虑错误处理、文件大小限制、文件类型验证等其他细节。在开发过程中,利用`source code`和`tools`来调试...
用于RailsHTML5文件上传器这个gem使用来上传文件。安装在Gemfile中: gem 'rails-uploader'在航线上: mount Uploader :: Engine => '/uploader' 迁移ActiveRecord: $ bundle exec rails g uploader:install用法...
在实现Rails应用中的多图上传功能时,通常需要借助于特定的插件或Gem来简化开发流程并增强功能。以下两个工具是必不可少的: 1. **Paperclip(Gem)** - **用途**:用于后台文件处理,是一款非常强大的工具,支持...
在Rails中,最常用的文件上传库是Paperclip和CarrierWave,但现在更推荐使用ActiveStorage,这是Rails 5.2及更高版本内置的一个功能。ActiveStorage直接与数据库交互,方便管理和存储文件,同时支持通过第三方服务如...
- 后端可以使用如Django、Ruby on Rails、Node.js等框架提供的文件上传中间件。 综上所述,多文件上传功能涉及到前端与后端的紧密结合,包括文件选择、预览、上传、存储、安全控制等多个环节。理解并熟练掌握这些...
ActiveStorage与云存储服务如Amazon S3或Google Cloud Storage集成,方便地处理文件上传、存储和检索。它还提供了一套内置的图像处理工具,如thumbnail生成,以适应不同的展示需求。 3. **验证码生成**:为了防止...
Ruby-CarrierWave 是一个流行的文件上传库,专为Ruby Web框架如Rails和Sinatra设计,旨在提供一种更优雅、更灵活的方式来处理文件上传。它弥补了Ruby标准库在处理文件上传时的不足,提供了丰富的功能和易于定制的...
综上所述,这个项目提供了实现文件上传功能的实例,包括前端表单设计、后端控制器逻辑、数据库交互以及可能的文件处理和验证。开发者可以根据自身需求,对提供的代码进行扩展或调整,以适应自己的应用程序。
### ROR 文件的上传与下载:深入解析与...以上就是基于Ruby on Rails实现文件上传与下载功能的完整流程。通过合理的数据库设计、视图构建、控制器逻辑和模型处理,可以有效管理应用程序中的文件资源,提升用户体验。
该项目是一款基于jQuery实现的丰富功能文件上传设计源码,包含59个文件,涵盖23个JavaScript文件、5个CSS文件、4个HTML文件等多种类型。支持多文件选择、拖放上传、进度条显示、文件验证与预览,并集成了音频、视频...
在这个场景中,我们关注的是Rails的自动完成、文件上传、分页以及上传进度管理相关的插件。让我们详细了解一下这些关键知识点: 1. **Rails 自动完成**: 自动完成是一种功能,允许用户在输入框中键入时提供预填...
接着,可以创建一个文件上传的实例并实现相关的操作: ```ruby class AttachmentsController def create @attachment = Attache::File.new(params[:file]) if @attachment.save render json: { url: @...
这个“Rails项目源代码”是一个使用Rails构建的图片分享网站的完整源代码,它揭示了如何利用Rails的强大功能来创建一个允许用户上传、分享和浏览图片的应用。 1. **Rails框架基础**: Rails的核心理念是DRY(Don't...
7. **Rails插件与Gem**:Rails社区提供了丰富的插件和Gem,如Devise用于身份验证,Paperclip或Carrierwave处理文件上传,Resque或Sidekiq实现后台任务队列。掌握如何选择和使用这些工具来扩展应用功能。 8. **Rails...