【问题标题】:How to know the file type of the file which you are forcing the user to download?如何知道您强制用户下载的文件的文件类型?
【发布时间】:2010-05-25 07:54:41
【问题描述】:

我试图强制用户下载文件。为此,我的脚本是:

$file = "file\this.zip";        
header("Cache-Control: public");
header("Content-Description: File Transfer");
header("Content-Disposition: attachment; filename=$file");
header("Content-Type: application/zip"); //This is what I need
header("Content-Transfer-Encoding: binary");
readfile($file);

我要上传的文件不是 .zip,所以我想知道我将在 $file 中收到的图像的内容类型。 如何做到这一点

【问题讨论】:

    标签: php file-handling


    【解决方案1】:

    我总是输入application/octet-stream(或类似的东西),因为浏览器无法尝试以任何方式显示它,它总是会强制用户保存/运行,然后文件类型通常由扩展名。

    【讨论】:

      【解决方案2】:

      对于图片,最可靠的是getimagesize()。对于任何其他类型,Fileinfo 函数都是正确的。

      不过,我赞同 ck 的说法:强制下载时,octet-stream 是防止在浏览器或相应客户端应用程序中打开内容的最佳选择。

      【讨论】:

        【解决方案3】:

        嘿,在下面的链接中,您可以看到您需要的 Content-Type 的值:

        Internet Media Type

        这里太多了,无法一一列举 拉迪斯拉夫

        【讨论】:

          【解决方案4】:

          好的,我自己做的。

          我用过

          $type = filetype($file); //to know the type
          

          【讨论】:

          • 这只会为您的所有文件返回“文件”。不是你想要的。
          • 是的,我刚刚注意到。我按照建议使用了 application/octet-stream
          【解决方案5】:

          您需要将 mime-type 发送到那里。您可以使用mime_content_type 函数在PHP 中获得此信息。还有 Fileinfo 扩展名,它提供了一种获取大量文件信息的方法,包括 mime 类型。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2023-03-20
            • 1970-01-01
            • 2016-11-28
            • 2012-09-15
            • 1970-01-01
            • 1970-01-01
            • 2011-02-19
            • 1970-01-01
            相关资源
            最近更新 更多