将生成的文件保存到数据库PHPWORD

时间:2018-03-27 06:15:27

标签: php phpword

我是php编程的新手,我想问一下,如果使用PHP字,是否可以将生成的文件直接保存到数据库中?

$xmlWriter  = \PhpOffice\PhpWord\IOFactory::createWriter($phpWord, 'Word2007');

$xmlWriter ->save("php://output");

我需要更改此行吗?我正在使用php5,mysqli

2 个答案:

答案 0 :(得分:0)

不能将PHPWord对象直接保存到数据库中;您可以将其保存到PHP的任何流中,无论是服务器上的文件还是输出流(浏览器),但您必须编写自己的代码才能将其存储在任何数据库中,可能首先将save()输出发送到服务器上的文件。

答案 1 :(得分:0)

假设你有一个带有BLOB行的mysql表upload_file,你将存储你的word文件。

例如,我们有 create-word.php

$xmlWriter  = \PhpOffice\PhpWord\IOFactory::createWriter($phpWord, 'Word2007');

$xmlWriter ->save($somePathToUpload.$filename);

通过PhpWord从生成的文件中获取内容:

$file = file_get_contents($somePathToUpload.$filename);

并在插入查询中使用此变量,如:

$query= "insert into upload_file(file_blob) values($file)";

然后从磁盘中删除生成的文件:

 unlink($somePathToUpload.$filename);

表格提交:

您可以通过表单提交调用此 create-word.php 文件,假设我们有一些表单:

<form action='create-word.php'>
     <input type='submit' value='submit'/>
</form>

JQUERY AJAX:

或者您可以通过ajax调用 create-word.php

$.ajax({
    url: 'create-word.php',
    type: 'post',
    success: function(response){ // do stuff },
    error: function(error){ console.log(error.responseText); }
});

<强>更新

blob插入使用PDO更详细:

$file = file_get_contents($somePathToUpload.$filename);
$pdo = new PDO("mysql:host=localhost;dbname=yourdb", "dbname", "dbpass");
$statement = $pdo->prepare("insert into upload_file(file_name) values(?)");
$statement->bindParam(1, $file);
$statement->execute();

您也可以观看此video tutorial以获得更多清关