我用apache做了一个文件分享功能的站点(如下图),可以实现了http模式的文件查看和下载。有的朋友看到了奇怪问这是怎么做到的,这其实只是一些appche服务器的基本功能,搞前端的coder也要了解一下服务器才好;下面来说具体的操作:
很简单
1.实现原理
通过apache的一个模块:mod_autoindex 这个模块的主要功能是自动对目录中的内容生成列表,这样当我们对服务器地址进行访问时在浏览器端可以看到访问目录下文件列表,点击它浏览器能打开的则打开查看,不能打开的则弹出是否保存的对话框,当然也可以右键链接另存为,这样就实现了访问下载文件的功能,对于mod_autoindex更多知识 可以查看金步国apache手册翻译
(http://www.jinbuguo.com/apache/menu22/mod/mod_autoindex.html)
如果需要可以点击下载apache中文手册
(http://download.csdn.net/detail/chen_gong1992/9700259)
2.配置httpd.conf文件
apache 的目录索引样式用的mod_autoindex模块 一般默认为开启状态
找到httpd.conf文件,查找下面的内容 如果有#号注释则去掉,没有这句话就补上去。这样就开启了mod_autoindex
LoadModule autoindex_module modules/mod_autoindex.so
另外 检查一下访问权限,如果发现下面有deny from all 请注释掉 改成allow from all。
3.设置请求目录
当从服务器请求一个目录的时候,可能来自:
mod_dir的DirectoryIndex指定首页
mod_autoindex目录
如果你想直接访问mod_autoindex目录列表,那就删除服务器目录下的mod_dir的DirectoryIndex指定首页,或者在配置文件httpd.conf中修改。我在我的服务器目录C:\Program Files (x86)\Apache Software Foundation\Apache2.2\htdocs下放了一些文件,接下来在浏览器窗口输入http://127.0.0.1或者localhost进行本地访问下看看效果
是不是感觉真丑和上面图片显示差别太大了,别急接下来我们对目录显示进行优化。
4.优化显示
将下面的代码加到httpd.conf文件中
Options Indexes FollowSymLinks
IndexOptions FancyIndexing FoldersFirst NameWidth=* DescriptionWidth=* SuppressHTMLPreamble HTMLTable
IndexOptions Charset=utf-8 IconHeight=16 IconWidth=16 SuppressRules
IndexIgnore web header.html footer.html actions defects
Header