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的方式是不是不对?但是我不会别的方法了。

阅读 2.9k
1 个回答

data uri 是一种数据流格式,不能直接接收后写入文件,例如图片的base64格式也是data uri的一种。
file_put_contents($tempPath,file_get_contents("php://input"));
$tempPath //是要保存的文件名称
要将接受到的数据处理后再写入文件

http://www.cnblogs.com/yida91...

可以查查关于data uri的资料 ,以上仅供参考

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题