file_put_contents创建一个具有正确页数的空pdf文件

时间:2019-01-24 11:59:08

标签: javascript php ajax xmlhttprequest file-put-contents

我想通过api调用发送内容在服务器上创建pdf文件。

我要做的是:

使用xhr向第三方api发送请求,并获得类似于以下内容的二进制响应:

%PDF-1.4
%ª«¬­
1 0 obj
<<
/Title (Resume)
/Author (LinkedIn)
/Subject (Resume generated from profile)
/Producer (Apache FOP Version 2.2)
/CreationDate (D:20190124111323Z)
>>
endobj
2 0 obj
<<
  /N 3
  /Length 3 0 R
  /Filter /FlateDecode
>>

此后,我创建一个具有此内容的对象,在该对象上执行JSON.stringify,然后通过API POST请求将其发送到我的服务器

在服务器上,我等待请求,从中获取content并对该数据执行file_put_contents

结果是,创建的文件具有正确数量的pdf页,但为空。可能是什么问题?

AJAX请求:

//This request is to the third party api which returns the response
//as shown above and is available in content variable

_this.loadFile((content) => {

    var data = {};
    data.type = 'application/pdf';
    data.ext = 'pdf';
    data.content = content;

    $.ajax({
        url: api_url + '/files',
        type: 'POST',
        data: JSON.stringify(data),
        contentType: "application/json",
        success: function(response) {
            alert('Done');
        },
        error: function(response) {
            alert('Error');
        }
    });
});

API请求处理

//Gets the posted data in $data variable
//Content is correct all values are correct

$fileName = 'file-tmp-' . time() . $data['ext'];
$filePath = 'data/' . $fileName;
$content = $resume['content'];
file_put_contents($filePath, $content);

生成该文件后,我可以查看它,pdf的页面数正确,如果我尝试在编辑器中查看该文件,它会显示第三方API请求的内容。

另外,通过第三方网站和第三方API下载的文件内容相同。但是直接下载的文件的内容在其页面中可见,而我在服务器上创建的文件显示空白页面。两种pdf文件都可以被读者打开,而没有任何错误。

我做错了什么?

0 个答案:

没有答案