PHP header('Content-Type : image/jpeg') 适用于本地主机但不适用于真实服务器

Posted

技术标签:

【中文标题】PHP header(\'Content-Type : image/jpeg\') 适用于本地主机但不适用于真实服务器【英文标题】:PHP header('Content-Type : image/jpeg') works on localhost but not working on real serverPHP header('Content-Type : image/jpeg') 适用于本地主机但不适用于真实服务器 【发布时间】:2017-03-16 21:33:42 【问题描述】:

我想对用户隐藏图像 url,所以我使用 php header() 函数,当我在 Bluehost 上托管我的网站时出现问题,它在 localhost 上运行良好。 这是我访问图像的功能。

function download($name = '', $tiny = '0') 
    if ($name != '') 
        $file = $this->mdl->get_file($name);
        if($file)
                $mime = mime_content_type('./'.$file->path.$file->name);
                header('Content-Type: '.$mime);
                echo file_get_contents('./'.$file->path.$file->name);
        
    

这是模型上的 get_file 函数:

function get_file($name='')
    if($name!='')
        return $this->db->select('*')
        ->from('docs')
        ->where('name',$name)
        ->get()
        ->row();
    
    return false;

感谢任何有帮助的答案。

【问题讨论】:

bluehost 发生了什么?有什么错误吗? 当我想使用 Mozilla 查看图像时出现以下错误:图像“mywebsitename.com/index.php/main/download/1234556.jpg”无法显示,因为它包含错误。但是当我使用 Chrom 浏览器时,它只显示一个小框而不是图像。 @Gabriel Heming 【参考方案1】:

只能在任何数据发送到浏览器之前设置标题。

检查<?php 标记前的空格。

检查您的文件是否保存为没有 BOM 的 UTF-8,BO 标记可能被解释为输出。

检查您的托管商是否向您的页面添加了其他内容/标题。

【讨论】:

这应该是 cmets 中的问题,而不是答案,因为我们不知道这些事情是否与他当前的设置有关。 header() 适用于 'Content-type : application/pdf' 但给出错误 'Content-type : image/...'【参考方案2】:

基本上这种类型的问题发生在 php 标签中存在任何空格或换行符或在 header 函数之前打印的任何内容时。

试试这个:

ob_clean(); 在标题之前

【讨论】:

以上是关于PHP header('Content-Type : image/jpeg') 适用于本地主机但不适用于真实服务器的主要内容,如果未能解决你的问题,请参考以下文章

PHP header('Content-Type : image/jpeg') 适用于本地主机但不适用于真实服务器

PHP插入header('content-type:text/html;charset="utf-8')和error_reporting()

PHP中header('content-type:text/html;charset="utf-8')和error_reporting()的作用

`header("Content-type:application/json");`的用法

php设置文件类型content-type

php header utf8