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 に答える