我是php编程的新手,我想问一下,如果使用PHP字,是否可以将生成的文件直接保存到数据库中?
$xmlWriter = \PhpOffice\PhpWord\IOFactory::createWriter($phpWord, 'Word2007');
$xmlWriter ->save("php://output");
我需要更改此行吗?我正在使用php5,mysqli
答案 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以获得更多清关