Php restler函数调用时强制下载

Php restler函数调用时强制下载,php,restler,Php,Restler,我在restler中得到了以下函数 /** * get updateFiles by name * * one could get the last update file * * @status 201 * @return file */ function getupdateFile($filename) { $file = 'Plakat.jpg'; if (file_exists($file)) { header('Content-Desc

我在restler中得到了以下函数

/**
 * get updateFiles by name
 *
 * one could get the last update file
 *
 * @status 201
 * @return file
 */
function getupdateFile($filename) {

    $file = 'Plakat.jpg';

    if (file_exists($file)) {
        header('Content-Description: File Transfer');
        header('Content-Type: application/octet-stream');
        header('Content-Disposition: attachment; filename='.basename($file));
        header('Content-Transfer-Encoding: binary');
        header('Expires: 0');
        header('Cache-Control: must-revalidate');
        header('Pragma: public');
        header('Content-Length: ' . filesize($file));
        ob_clean();
        flush();
        readfile($file);
        exit;
    }
    else {
        return "<h1>Content error</h1><p>The file does not exist!(".dirname(__FILE__).'/'.($file).")</p>";
    }
}
/**
*按名称获取UpdateFile
*
*可以获取最后一个更新文件
*
*@status 201
*@return文件
*/
函数getupdateFile($filename){
$file='Plakat.jpg';
如果(文件_存在($file)){
标题(“内容描述:文件传输”);
标题(“内容类型:应用程序/八位字节流”);
标题('Content-Disposition:attachment;filename='.basename($file));
标题(“内容传输编码:二进制”);
标题('Expires:0');
标头(“缓存控制:必须重新验证”);
标题(“Pragma:public”);
标题('Content-Length:'.filesize($file));
ob_clean();
冲洗();
readfile($file);
出口
}
否则{
return“Content error文件不存在!(“.dirname(uuu file_uu)。”/“($file)。”

”; } }
问题是文件存在,权限正确,但没有文件下载 强迫。 失败在哪里? 它总是返回“文件不存在,但确实存在”。 我用强制下载php搜索了不同的问题,但这似乎是restler的问题

Thx
Ingo

您可以尝试下面的代码,该代码恰好工作正常

$file = 'Plakat.jpg';
if(file_exists($file))
{
    header("Content-Type: image/png");
    header('Content-Disposition: attachment; filename="ImageName.png"');
    header("Content-Type: application/force-download");
    header("Content-Type: application/octet-stream");
    header("Content-Type: application/download");
    readfile($file);
}

exit();

您没有使用
$filename
,您知道吗?请尝试
标题(“缓存控制:必须重新验证,后检查=0,预检查=0”);
@Baba,如果函数分支到
else
(这就是错误的来源),然后如果
中的任何内容与问题无关。Sry用于延迟响应。@slhck我知道,但只是为了测试,我将$file varaibel放在那里。因此这并不重要。您是对的,头不重要,因为它从未被调用:(尝试对$file使用完整路径。问题不在于restler不起作用,问题在于if子句中的代码从未被调用,因此file_存在似乎有问题。可能与默认restler设置中需要的restler htaccess mod_rewrite有关?