3

在我的应用程序中,用户可以根据租金项目创建收据。

我使用此代码从现有模板中创建一个 Word 文件 (.doc)。

        header("Content-type: application/vnd.ms-word");
        header("Content-Disposition: attachment;Filename=Rent_Receipt_". $_SESSION['custid']    .".doc");
        include ("templates/template_receipt.php");

现在用户将把它存储在他的本地计算机上,但是我怎样才能让服务器将这个相同的文档存储在服务器文件夹中,这样用户就不必手动上传它了?

提前致谢。

编辑
include: template_receipt.php 包含要创建的 Word 文档的 HTML 代码:

<?php echo "
<html xmlns:v='urn:schemas-microsoft-com:vml'
xmlns:o='urn:schemas-microsoft-com:office:office'
xmlns:w='urn:schemas-microsoft-com:office:word'
xmlns:m='http://schemas.microsoft.com/office/2004/12/omml'
xmlns='http://www.w3.org/TR/REC-html40'>

<head>
<meta http-equiv=Content-Type content='text/html; charset=windows-1252'>
<meta name=ProgId content=Word.Document>
<meta name=Generator content='Microsoft Word 14'>
<meta name=Originator content='Microsoft Word 14'>
<link rel=File-List href='Template%20Verhuurbon_files/filelist.xml'>
<link rel=Edit-Time-Data href='Template%20Verhuurbon_files/editdata.mso'>
<link rel=dataStoreItem href='Template%20Verhuurbon_files/item0001.xml'
target='Template%20Verhuurbon_files/props002.xml'>
<link rel=themeData href='Template%20Verhuurbon_files/themedata.thmx'>
<link rel=colorSchemeMapping
href='Template%20Verhuurbon_files/colorschememapping.xml'>

等等。我马上调查一下ob*_。感谢您的快速响应。

4

2 回答 2

3

ob_*功能会有所帮助。
例如:

<?php
    // geting file content
    ob_start();
    include ("templates/template_receipt.php");
    $content = ob_get_contents();
    ob_end_clean();

    //store in local file
    file_put_contents('/file/name.txt',$content);

    // file output:
    header("Content-type: application/vnd.ms-word");
    header("Content-Disposition: attachment;Filename=Rent_Receipt_". $_SESSION['custid']    .".doc");
    echo $content;
?>
于 2012-12-04T10:43:07.033 回答
1

您没有显示实际将内容发送给用户的代码,但总体思路是您应该打开输出缓冲并捕获生成的文档,例如:

ob_start();
include ("templates/template_receipt.php");
$document = ob_get_clean();

完成此操作后,您可以使用简单的方式将文档发送给用户,echo $document同时使用类似file_put_contents('local_copy', $document).

于 2012-12-04T10:42:16.163 回答