php 点击时出现另存窗口,而不是直接打开该文件

#1 温作权

我想下载图片怎么做呢?求帮助。我在php 手册找了好久 都没看到 太多东西了

2011-12-26 12:02:54

#2 fosf

    //下载文件
    public function down()
    {
        $file_dir=$this->attachDir."/";
        $file_name=$this->spArgs('db');
        if (!file_exists($file_dir.$file_name)) {
            echo "Can't find file.";
            exit;
        } else {
            $file = fopen($file_dir . $file_name,"r");
            Header("Content-type: application/octet-stream");
            Header("Accept-Ranges: bytes");
            Header("Accept-Length: ".filesize($file_dir . $file_name));
            Header("Content-Disposition: attachment; filename=" . $file_name);
            echo fread($file,filesize($file_dir . $file_name));
            fclose($file);
            exit;
        }
    }
这是我正在用的,你可以试下

2011-12-26 12:48:02

#3 温作权

回复 2 fosf


    非常感谢。我找了好久,这个就是我想要的。。

2011-12-26 14:19:45

#4 温作权

utf-8怎么办?在utf-8 保存的不能预览,是什么问题呢?

2011-12-26 15:02:22

#5 coolhpy

Header("Content-Disposition: attachment; filename=" . $file_name);
把这句话的$file_name的编码转成gb就是了

2011-12-27 08:32:26

#6 jake

把这句话的$file_name的编码转成gb就是了
coolhpy 发表于 2011-12-27 08:32
good

2011-12-27 09:10:26

#7 温作权

怎么转呢?
header("Content-Disposition: attachment; filename=" . iconv('GB2312','UTF-8', $file_name));
吗?还是怎么转?

2011-12-27 10:17:50

#8 coolhpy

查下手册,iconv怎么用的,,服务器不支持iconv的话,上网搜下utf8转gbk的代码,很多的

2011-12-27 14:50:23

#9 jake

怎么转呢?
header("Content-Disposition: attachment; filename=" . iconv('GB2312','UTF-8', $file_name) ...
温作权 发表于 2011-12-27 10:17
试试?

2011-12-27 15:34:56

#10 温作权

回复 9 jake


    试过了没用,不知道是bom的原因 还是什么原因,一旦extends spController 就下载的不能预览,但ps能打开。然后就不管它了,就直接用原始方法,不用类了。谢谢帮助

2011-12-28 11:05:16

#11 jake

回复  jake


    试过了没用,不知道是bom的原因 还是什么原因,一旦extends spController 就下载的不能 ...
温作权 发表于 2011-12-28 11:05
的确是bom问题。在header前面加上ob_start();ob_clean();就行。

2011-12-28 11:55:05