Chinaunix首页 | 论坛 | 博客
  • 博客访问: 13512
  • 博文数量: 2
  • 博客积分: 1415
  • 博客等级: 上尉
  • 技术积分: 30
  • 用 户 组: 普通用户
  • 注册时间: 2009-03-09 14:24
文章分类
文章存档

2009年(2)

我的朋友

分类: 系统运维

2009-03-24 11:45:05

最近用Redhat AS5.0+apache+php搭建基于web的ftp管理系统。搭建系统目的使当上传文件的时候能自动加入文件名、作者、摘要、关键字等信息,因为增加了文档的关键字、摘要等信息在web界面上管理ftp更加方便。

根据要求,ftp系统主要管理mht格式的文档,因为公司有很多方案、成功案例都是word的,不过word文档太大,下载不方便,所以要求大家把word文档转为mht,然后上传。

整个系统ftp服务和web服务是分离的,分别位于不同的两台服务器(我们生产服务器,所以用服务器比较浪费)上。上传文档到ftp的过程很方便,问题主要集中在下载时候,几经努力终于搞定。

首先控制下载word、ppt、excel时弹出对话框。

主要通过设置header头实现:

//设定二进制文件流

header("Content-Type:application/octet-stream");

//弹出对话框时显示文件名,并且提供打开、保存、取消。注意attachment和inline是相对的,attachment弹出窗口,inline则直接打开。甚至还可以添加force-download等选项。

header("Content-Disposition:attachment; filename=".basename(iconv("UTF-8","GB2312",$filename)));

//下载文件 

readfile($filename);

其次控制mht文件下载。mht文件要在页面中直接打开,要用到上文的inline参数

简单的文本格式的mht文件直接可以在网页中显示,以下配置针对带有图表的mht文件显示。

mht文件不是apache默认支持的文件格式,无论在window下或者linux下。在windows下面通过配置apache安装路径下面的conf/mime.types,在message/rfc822后面添加mht,重启apache即可,这在好多帖子里都有详细的叙述。不过用windows作为服务器的人太少了。查了很多结果大都是windows下的配置。无奈挨个查看/etc/httpd/conf/下面的所有文件。

在httpd.conf文件中有这样一句话:

409 # TypesConfig describes where the mime.types file (or equivalent) is
410 # to be found.
411 #
412 TypesConfig /etc/mime.types

马上寻找/etc/mime.types文件,找到rfc822在后面添加mht,然后重启apache,唉,怪了,此时用rfc822来解释mht文件,怎么还是不行?重启linux,还是不行,呜呜~~

然后在网页主目录中上传一个mht文档,点开以后发现文件名是都变成了数字,并用%隔开,估计经过rfc822的格式压缩过了。此时又想到了header的Content-Type。

%以下是打开mht文件的代码:

//根据后缀判断是否为mht文件,$basename是文件名

if(substr(basename($basename),-3,3) == 'mht'){

  $filename = $ftp['localRoot']."/".$basename;

//设置Content-Type为rfc822,rfc822在mime.types中已经配置过支持mht啦
  header("Content-Type:message/rfc822");

//直接显示,设定文件名为$basename,并且把编码转换为gb2312(浏览器经常处于windows环境)IE中标签页的名字显示为$basename。
  header("Content-Disposition:inline; filename=".basename(iconv("UTF-8","GB2312",$basename)));

//打开文件
  readfile($filename);
 }

至此,Linux+apache+php的ftp文件管理系统就可以工作了~~

哈哈,平生第一篇blog。

阅读(1825) | 评论(0) | 转发(0) |
0

上一篇:没有了

下一篇:Komodo本地与远程调试

给主人留下些什么吧!~~