文件上传,页面代码:
<%form_tag '/project/add_attach',:multipart=>true do%>
<%=file_field 'path'%>
<%=submit '提交'%>
<%end%>
#文件上传处理,只需在数据库表中,记录路径就可以了,下面代码写在controller层:
name = Time.now.strftime("%y%m%d%I%M%S") + 'size'+ params[:path].size.to_s ##防止新文件名重复
suffix=File.extname("#{params[:path].original_filename}") #取旧文件名
name<<suffix
directory = "public/data"
path = File.join(directory, name) ##传换路径,格式:/public/data/xx.xx
File.open(path, "wb") { |f| f.write(upload.read) } ##写文件内容
params[:path]页面上传过来的一个file参数 (格式:与#<Action...>相似)
##下载文件,controller层:
def download
send_file params[:path] #只需传文件路径,格式:/public/data/xx.xx
end
##删除文件,写在model层(只须传一个文件名(xx.xx)):
def self.filedelete(name)
if File.exist?("#{File.dirname(__FILE__)}/../../public/data/#{name}")
File.delete("#{File.dirname(__FILE__)}/../../public/data/#{name}")
end
end
分享到:
相关推荐
在Ruby on Rails框架中,...通过理解以上知识点,你将能够构建一个功能完善的Rails文件上传系统,确保用户能安全、便捷地上传和管理他们的文件。在实际项目中,还需要考虑性能优化、错误处理和用户体验等方面的问题。
6. **测试**:确保为文件上传功能编写测试,覆盖上传、删除、替换和访问已上传文件的各种场景。升级后,这些测试能帮助识别并修复可能出现的问题。 7. **性能优化**:考虑文件上传的性能,如分块上传、预处理(如...
例如,Devise用于用户认证,CanCanCan用于授权管理,Paperclip或Carrierwave处理文件上传,Stripe或PayPal集成支付功能,以及各种数据分析和报表生成库等。 总的来说,这个压缩包对于Ruby on Rails的初学者或希望...
这些插件提供了处理文件上传、存储、版本控制和删除的功能。它们可以将文件存储在本地磁盘、云服务如Amazon S3或Google Cloud Storage上,同时提供方便的模型关联和数据库记录。 3. **分页**: 分页是Web应用中...
10. **社区和生态系统**:Rails拥有庞大的开发者社区,产生了许多优秀的第三方Gem库,如Devise(身份验证),Paperclip(文件上传),Pundit(权限控制)等,丰富了Rails的功能。 Rails 1.0.0的发布标志着Web开发...
Ruby-CarrierWave 是一个流行的文件上传库,专为Ruby Web框架如Rails和Sinatra设计,旨在提供一种更优雅、更灵活的方式来处理文件上传。它弥补了Ruby标准库在处理文件上传时的不足,提供了丰富的功能和易于定制的...
10. **插件和Gem**:Rails的生态系统中,Gem是第三方库的主要形式,它们提供了额外的功能,如Devise用于身份验证,CanCanCan用于授权,Paperclip或Carrierwave处理文件上传等。 11. **部署**:了解如何将Rails应用...
此外,Rails提供了丰富的插件和gem(Ruby gem),例如Devise用于身份验证,CanCanCan处理授权,Paperclip或Carrierwave用于文件上传等,这些都能极大地增强应用的功能。 在开发过程中,Rails还提供了TDD(测试驱动...
- **上传文件**:介绍如何处理文件上传操作。 - **定制表单生成器**:解释如何创建自定义的表单生成器。 - **理解参数命名约定**:解释表单提交时参数的命名规则。 - **处理外部资源的表单**:指导如何处理来自外部...
**Rails 3 in Action** 这本书介绍了 **Ruby on Rails**(简称 Rails)这一 Web 开发框架的核心概念和技术细节。Rails 自发布以来便以其优雅、高效、易于使用的特性而闻名,它极大地简化了 Web 应用程序的开发过程。...
这个例子展示了如何在Rails控制器中处理文件上传和删除。当然,实际应用中可能需要根据具体需求进行更复杂的定制。 总的来说,Ruby-Attache是一个强大的工具,简化了文件上传的处理,同时提供了丰富的功能和高度的...
10. **Gem包管理**:Ruby的Gem系统使得安装和管理第三方库变得简单,如Devise用于用户认证,Paperclip或Carrierwave处理文件上传,Bootstrap提供前端UI组件等。 学习Rails的过程中,实践尤为重要。通过完成实际项目...
10. **Gem包管理**:Ruby的Gem是类似Python的pip或Node.js的npm的包管理工具,Rails应用广泛依赖于Gems,如Devise用于身份验证,Pundit或CanCanCan用于权限管理,Carrierwave或Paperclip处理文件上传等。 11. **...
6. **插件和gem**:Rails社区有大量的插件和gem可供扩展功能,如Devise用于用户认证,Cancancan用于授权,或者Paperclip和Carrierwave处理文件上传。 7. **Ajax和JavaScript**:Rails 2.2.2支持集成Prototype ...
在命令行中输入 `rails new mybook`,这会生成一个名为 "mybook" 的新项目目录,包含所有必要的文件和目录结构。其中,`config/routes.rb` 文件定义了应用程序的路由,`app/models` 目录存储模型文件,`app/...
2. **初始化**:执行`rails generate administrate:install`命令,这将生成基础的路由和应用所需的配置文件。 3. **资源定制**:通过在`app/admin`目录下为每个数据库模型创建一个新文件,可以自定义每个管理页面的...
5. **持久化和清理**:根据存储策略,你可能需要将临时文件移动到永久存储位置,或者在处理完文件后删除临时文件。 总的来说,`rack-secure-upload`为Ruby开发者提供了一套强大的工具,使得在处理文件上传时能够...
10. **Rails社区和生态**:Rails有庞大的开发者社区,提供了众多高质量的开源gem,如Devise(用户认证)、Paperclip或Carrierwave(文件上传)、Pundit或CanCanCan(授权)、Resque或Sidekiq(后台任务处理)等。...