`
leon0122
  • 浏览: 45440 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

ROR实现大文件静态下载

    博客分类:
  • ruby
阅读更多
      最近在做一个项目,是帮用户管理媒体文件,主要负责媒体文件的上传,下载(不是视频点播,只是上传下载而已).用户的文件通常都很大,500M+,有时候1G,不过是企业内部网,用户在30个人左右。用户提供的服务器如下:一台志强4核的服务器,Windows2003,4G内存。由于用户每年要上传的文件都有100G+,所以不可能把用户上传的文件放在应用程序的public下,在程序中提供了一个管理功能,在一个盘被塞满的情况下可以让用户更改上传目录。这么一来,数据库保存的就是该文件的绝对物理地址。

      现在问题来了:在下载文件的时候,如果用send_file的话1G以上的文件无法下载,0.99G的就可以,非常郁闷,而且用mongel服务器,多个用户下载的时候,绝对挂。。。所以就要改成静态文件的下载方式。但是上传的文件并没有放在public下面,该怎么办呢???

       请教了很多人。结果得到的一致的方法:用虚拟目录。

       假如我现在文件上传的目录是c:\MEDIAFILES

      1)先开始想到的是apache,毕竟部署的时候是用apache+mongel,于是改动apache的配置文件加入如下代码:

        
<IfModule dir_module>
    DirectoryIndex index.html
    
    Alias /c c:/MEDIAFILES
   <Directory c:/MEDIAFILES> 
     Options MultiViews 
     AllowOverride None 
     Order allow,deny 
     Allow from all 
   </Directory>

</IfModule>
         

       然后在超连接中这么写:
        <a href="http://202.101.165.245/c/200812/200812161600022501.rar">download</a>


       但是结果令人失望,运行时候就报出route错误。(个人分析是因为apache根本就不知道你要下载的那个资源是静态资源,所以将请求转发给mongel)

      2) 既然apache不行,那就换个服务器,毕竟支持虚拟目录的服务器还是蛮多的。于是我选用了tomcat。安装好tomcat后,配置一下tomcat下的conf目录下的server.xml文件,在下面加上如下代码
<Context path="/c" docBase="C:\MEDIAFILES" reloadable="true" debug="0"></Context>


运行tomcat。然后点击"download",OK,一切搞定。。。
如果以后更换了上传目录,那么就在server.xml中,再重新加上
<Context path="/e" docBase="e:\MEDIAFILES" reloadable="true" debug="0"></Context>
就OK了。。


到这里,问题总算告一段落,虽然解决了问题,但是总觉得心里不爽,毕竟这种方式还是蛮拙劣的。别问我为啥不用linux,为啥不搞个专门的文件服务器。。。。。。。如果真的可以的话,就不会有今天这篇文章了。

如果大家有更好的办法。请提出,我们共同学习。呵呵……
1
0
分享到:
评论
2 楼 leon0122 2008-12-22  
想过用vmware,但是太麻烦。。。
1 楼 richyzhang 2008-12-20  
装vmware

相关推荐

    ror实例

    在压缩包中的`rubyonrails.pdf`文件可能是Rails的官方文档、教程或某位专家的经验分享,通过阅读这个文件,你可以深入理解Rails的工作方式,学习如何创建和管理数据库、编写控制器、搭建路由、构建视图以及进行测试...

    ror留言板程序

    "ror留言板程序"是一个基于Ruby on Rails框架开发的简单应用,它主要用于实现用户在网站上留言和查看他人留言的功能。Ruby on Rails(简称RoR)是用Ruby语言编写的开源Web应用程序框架,遵循MVC(Model-View-...

    用于ROR应用的lighttpd配置模板

    8. **缓存控制**:通过mod_magnet模块,可以实现静态资源的缓存,提升网站性能。 9. **服务器限制**:如最大连接数、超时时间等,用于控制服务器资源的使用。 在安装并解压提供的"lighttpd"压缩包后,你需要根据...

    doc_ecommerce:ror-ecommerce 的文档

    8. **public** 目录:静态资源如图片、CSS 和 JavaScript 文件。 9. **docs** 或 **guides** 目录:可能包含详细的项目文档,如 API 参考、用户手册等。 10. **videos** 目录:可能包含描述中的15分钟快速创建电子...

    intimate_web:一个 ROR 应用程序

    在这个目录中,你可能会找到诸如 `app`(应用的代码),`db`(数据库相关文件),`config`(配置文件),`public`(静态资源),以及 `Gemfile`(Ruby gem 依赖管理)等子目录。 深入研究这个项目,开发者可能会...

    Insta-clone:具有RoR和React.js的InstaClone

    4. `public` - RoR的静态资源目录,如CSS、JavaScript和图片。 5. `node_modules` - React的依赖模块存放位置。 6. `src` - React的源码目录,包括组件、样式、路由等。 7. `db` - 数据库相关的文件,如迁移脚本。 8...

    sample_app:我在 RoR 上的第一个示例应用程序

    在"sample_app-master"这个压缩包中,你将找到整个项目的源代码,包括`app/`目录下的模型、控制器和视图文件,`db/`目录下的数据库迁移文件,`config/`目录下的配置文件,以及`public/`目录下的静态资源。...

    ROR-Bookmarks

    2. **Rails 4.2.1**: Rails 4.x系列引入了许多改进,包括Action Cable(实现WebSockets通信)、Strong Parameters(加强参数安全)、Active Job(异步任务处理)、Asset Pipeline(静态资源管理)等。在4.2.1版本中...

    RoR-Depot:Ruby on Rails 仓库项目

    8. **public/**:存放静态资源,如图片、样式表(CSS)和 JavaScript 文件。 9. **config/environments/**:包含不同环境(如 development、test、production)的配置文件,每种环境的设置可能有所不同。 10. **...

    ror-codelit-landing:基于 ruby​​ on rails 的登陆页面

    4. `public` 目录:存放静态资源,如 CSS、JavaScript 文件和图片。 5. `lib` 目录:存放自定义库和工具代码。 6. `spec` 目录:测试代码,使用 RSpec 或其他测试框架编写。 7. `Gemfile` 和 `Gemfile.lock`:管理...

    ruby on rails 实例1

    由于没有具体的文件内容,我将根据一般RoR学习路径来解释一些关键知识点。 1. **Ruby语言基础**:首先,了解Ruby的基础语法是必要的,包括变量、数据类型、控制结构、函数、类和对象等。Ruby是一种动态类型的语言,...

    ProfessionalRubyonRails教程

    Ruby on Rails(简称RoR)是基于Ruby语言的开源框架,它倡导“约定优于配置”(Convention over Configuration)的理念,以简洁、高效的代码实现快速开发。 在本教程中,我们将探讨以下几个核心知识点: 1. **Ruby...

    export-handlers(fusioncharts离线导出服务).rar

    在某些场景下,例如离线环境或者网络不稳定的情况,用户可能需要将图表导出为静态图片或者Excel文件以便后续处理或分享。"export-handlers(fusioncharts离线导出服务).rar"这个压缩包文件就是为了满足这种需求,提供...

    Fall-2019-Final-ROR2-Character-Info:一个使用一些框架来帮助构建“下雨风险” 2个字符的网站的网站

    考虑到压缩包子文件的文件名称列表只给出了"Fall-2019-Final-ROR2-Character-Info-master",这可能是项目源代码的主分支或者根目录。通常,"master"分支代表了项目的主线代码,包含所有主要功能和更新。不过,没有...

    薄荷网RubyonRails开发运营实践.pptx

    对于Web服务器,他们选择了Nginx,而不是Apache或Lighttpd,原因在于Nginx在处理静态文件和反向代理上有较好的性能表现。应用服务器上,他们最初使用Mongrel,一种Ruby应用服务器,但由于其不支持多线程,所以计划...

    Reasoning method of orientation relations between objects in motion

    在对给定文件信息进行分析后,我们可以从中提炼出以下知识点: 1. 研究方向与背景:文章讨论了传统时空推理研究的局限性,这些研究多数仅关注静态空间对象,并且在时空方位关系的模型中存在一些问题。在此背景下,...

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

    自Rails 5起包含在RoR中。 开源对象关系数据库 宝石用于基于的身份验证 基于Ruby风格指南的静态代码分析器 开源静态分析工具可检查Ruby on Rails应用程序中的安全漏洞 用于Ruby的Cucumber实现 用于单元测试的测试...

    Ruby on Rails安装包全集(Linux)

    在Ruby on Rails开发中,它可以作为应用的前端服务器,负责静态文件服务和FastCGI通信。 4. **fcgi-2.4.0.tar.gz**: FastCGI是Web服务器与应用程序之间的一种接口,用于提高动态内容生成的性能。这里的是FastCGI的...

    Baking-Factory:使用Ruby on Rails制作的“烘焙工厂”应用程序。 该API的文件夹也包括在内

    5. **public** 目录:存放静态资源,如CSS样式表、JavaScript文件和图片。 6. **views** 目录:存放HTML模板,如erb文件,这些文件将Ruby代码和HTML结合在一起,生成最终的网页。 在RoR中,模型(Model)负责与...

Global site tag (gtag.js) - Google Analytics