实现把文件上传到服务器,文件名/文件大小/文件的描述 上传到数据库
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%>
分享到:
相关推荐
例如,Devise用于用户认证,CanCanCan用于授权管理,Paperclip或Carrierwave处理文件上传,Stripe或PayPal集成支付功能,以及各种数据分析和报表生成库等。 总的来说,这个压缩包对于Ruby on Rails的初学者或希望...
《Ruby on Rails 3 Tutorial》是一本专门为初学者设计的指南,旨在帮助读者快速掌握Ruby on Rails这一强大的Web开发框架。Ruby on Rails(简称Rails)是基于Ruby语言的一个开源框架,它采用MVC(Model-View-...
10. **Gem包管理**:Ruby的Gem系统使得安装和管理第三方库变得简单,如Devise用于用户认证,Paperclip或Carrierwave处理文件上传,Bootstrap提供前端UI组件等。 学习Rails的过程中,实践尤为重要。通过完成实际项目...
以上是关于“ruby on rails在线考试系统”的主要知识点,实际开发中还会涉及更多细节,如数据库设计、前端交互、用户体验优化等。这个系统需要综合运用Ruby on Rails的各种特性和最佳实践,以提供稳定、高效、易用的...
在Rails 2.2.3时代,社区已经发展出很多插件和 gems(Ruby的扩展库),如Devise用于身份验证,CanCanCan进行授权管理,Paperclip或Carrierwave处理文件上传等。虽然这些可能需要适配老版本,但它们能极大地增强你的...
13. **社区插件(Gems)**:Rails的生态系统中有大量高质量的第三方Gem,如Devise(用户认证)、Pundit(授权管理)、Paperclip或Carrierwave(文件上传)等,它们可以极大地扩展Rails的功能。 通过研究这个源码,...
### Ruby on Rails 指南 v5.0.1 中文版 #### Rails入门 - **前提条件**:为了能够顺利地开始Rails的学习之旅,读者需要具备一定的Ruby语言基础,并且对Web开发有一定的了解。 - **Rails是什么?**:Rails是一种...
Rails 多文件上传插件是基于 Ruby on Rails 框架的一款插件,旨在实现多文件的同时上传,控制文件的格式、数量,并且兼容多种浏览器,包括 IE6、7、Firefox 等。下面是对插件的详细解释和使用说明: 插件特点 1. ...
Ruby on Rails的社区非常活跃,拥有丰富的插件和gem(Ruby的库包),如Devise用于身份验证,CanCanCan进行权限管理,Carrierwave或Paperclip处理文件上传等。这些gem极大地扩展了RoR的功能,使得开发者可以快速搭建...
10. **Gem包管理**:Ruby的Gem是类似Python的pip或Node.js的npm的包管理工具,Rails应用广泛依赖于Gems,如Devise用于身份验证,Pundit或CanCanCan用于权限管理,Carrierwave或Paperclip处理文件上传等。 11. **...
10. **Gem包管理**:Ruby的Gem生态系统丰富,Rails项目通常依赖于大量第三方Gem,如Devise(身份验证)、CanCanCan(授权)、Carrierwave(文件上传)等,通过Gemfile管理这些依赖。 11. **Asset Pipeline**:Rails...
这些gem扩展了Rails的功能,例如Devise用于身份验证,CanCanCan用于授权管理,Pundit用于细粒度的权限控制,Paperclip或Carrierwave处理文件上传,Ransack提供高级搜索功能,以及Sidekiq或Resque实现后台任务处理。...
另外,书中可能还会讲解Rails的插件和gem的使用,如Devise用于用户认证,CanCanCan进行权限控制,或者Paperclip或Carrierwave处理文件上传等。这些gem是Rails生态系统的重要组成部分,让开发者能够快速集成常用功能...
Ruby on Rails 是一款基于Ruby语言的开源Web应用框架,它遵循MVC(Model-View-Controller)架构模式,使得开发者可以高效地构建功能丰富的Web应用程序。在这个“Ruby on Rails博客程序”中,我们将深入探讨如何在...
Rails社区活跃,拥有丰富的插件和gem(Ruby的包管理器),如Devise用于身份验证,CanCanCan进行权限控制,Paperclip或Carrierwave用于文件上传等。这些gem极大扩展了Rails的功能,加速了开发进程。 在本教程中,你...
6. **Gem生态系统**:Ruby on Rails依赖于Gem包管理系统,提供了丰富的第三方库和工具,如Devise用于身份验证,Pundit或CanCanCan处理授权,Carrierwave或Paperclip处理文件上传,以及ActiveAdmin或RailsAdmin这样的...
书中可能介绍了如何使用和开发Gem,以及常见的Rails插件如Devise(身份验证)、CanCanCan(授权)和Paperclip(文件上传)等。 9. **部署与性能优化**:书中可能会讲解如何将Rails应用部署到服务器,如使用...
最后,Rails社区非常活跃,有许多优秀的第三方gem库可以扩展Rails的功能,例如Devise用于用户认证,CanCanCan处理授权,Paperclip或Carrierwave处理文件上传等。通过`gem 'gem_name'`在`Gemfile`中添加gem,然后运行...
通过深入研究和理解这些文件,你可以学习如何将Ruby on Rails、Hotwire和Tailwind CSS结合起来,构建出一个功能丰富的视频共享应用。 总的来说,这个项目提供了从后端数据处理到前端交互体验的完整实现,对于想要...