PHP如何保存JQ AJAX POST过来的DATA URI数据问文件?
我使用JSPDF这个插件,将网页转换成了PDF文件,JSPDF有个方法,可以使用doc.output()把PDF转化为DATA URI数据。
然后我用AJAX,把这个doc.output()POST到了服务器,PHP接收后,把这个数据使用fwrite()的方法写入文件,可以成功创建PDF,但是这个PDF打开后有问题,提示内存不足,有页面,但是显示的是空白页面。有人可以帮忙解决下吗?付费也可以。
我是这样来实现的,麻烦看下是什么问题:
JQ部分:doc.output()之前的没有问题,在此省略。JSPDF里面说doc.output()是一个DATA URI数据,不懂这是什么数据。
pdfup(doc.output());
function pdfup(pdf){
$.ajax({
url: 'pdfup.php',
method: 'POST',
data:{pdf:pdf},
success: function(data) {
console.log(data);
}
})
}
PHP部分:
$pagecontent =$_REQUEST['pdf'];
//要创建的文件
$mulu="../upload/pdf/".date('Y')."/".date('m')."/";
if (!is_dir($mulu)){@mkdir($mulu, 0777, true);}
$TxtFileName =$mulu."1111.pdf";
//以读写方式打写指定文件,如果文件不存则创建
if(($TxtRes=fopen ($TxtFileName,"w+")) === FALSE){
echo("no");
exit();
}
if(!fwrite ($TxtRes,$pagecontent)){ //将信息写入文件
echo ("尝试向文件".$TxtFileName."写入失败!");
fclose($TxtRes);
exit();
}
这种保存DATA URI的方式是不是不对?但是我不会别的方法了。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
data uri 是一种数据流格式,不能直接接收后写入文件,例如图片的base64格式也是data uri的一种。
file_put_contents($tempPath,file_get_contents("php://input"));
$tempPath //是要保存的文件名称
要将接受到的数据处理后再写入文件
http://www.cnblogs.com/yida91...
可以查查关于data uri的资料 ,以上仅供参考