删除后将文件内容作为新文件下载返回

时间:2014-06-05 07:09:57

标签: php

我有两个连续请求调用的php函数:

在第一次请求时调用:

public static function ProcessResponseFile($request_file_content)
{
    session_start();
    $temp_file = tempnam("./tmp", "file"); 
    file_put_contents($temp_file, $request_file_content);
    $_SESSION['request_response'] = $temp_file;
    return file_get_contents($temp_file);
}

第二个请求调用以下函数:

public static function GetResponseFileContent()
{
    session_start(); 
    $filename = $_SESSION['request_response'];
    $handle = fopen($filename, "r");
    $response_content = fread($handle, filesize($filename));
    fclose($handle);
   // $response_content = file_get_contents($_SESSION['request_response']);
    unlink($_SESSION['request_response']);
    unset($_SESSION['request_response']);
    return $response_content;
}

$response_content为空。如果我评论unlink并取消设置,我会得到相应的文件内容。 那是为什么?

我想下载 GetResponseFileContent()的返回值

if (isset($_POST['submit_download'])) {

    ob_end_clean();
    header("Cache-Control: public");
    header("Content-Description: File Transfer");
    header("Content-Disposition: attachment; filename=raspuns.xml");
    header("Content-Type: application/octet-stream; "); 
    header("Content-Transfer-Encoding: binary");

    session_start();
    echo Application::GetResponseFileContent();

}

1 个答案:

答案 0 :(得分:1)

在使用ob_end_clean()之前,您必须使用ob_start()。否则,没有输出缓冲区可以清除。