我有简单的XMLHttpRequest到php服务器脚本。
fxhr.onload = function (data) {
//console.log(JSON.parse(data.target.response));
var string = JSON.parse(data.target.response).data.content;
console.log(JSON.parse(data.target.response));
DEFAULT_URL = convertDataURIToBinary(string);
var config = getViewerConfiguration();
window.PDFViewerApplication = pdfjsWebLibs.pdfjsWebApp.PDFViewerApplication;
pdfjsWebLibs.pdfjsWebApp.PDFViewerApplication.run(config);
};
fxhr.open('POST', window.location.pathname + 'content');
服务器脚本代码:
public function execute()
{
$productModel = new shopProductModel();
$bookModel = new shopEbooksPluginItemModel();
$item = $productModel->getByField('url', waRequest::param('product_code'));
$bookFile = $bookModel->getByField(array(
'product_id' => $item['id'],
'book_type' => waRequest::param('reader_state')
), false);
$content = @file_get_contents($this->getBookFullPath($bookFile));
$this->response = array('content' => $this->getBaseEncodedFile());
}
private function getBookFullPath($bookFileRow)
{
return $bookFileRow['file_path'] . $bookFileRow['file_name'];
}
private function getBaseEncodedFile($content)
{
return 'data:application/pdf;base64,' . base64_encode($content);
}
如果我尝试阅读小pdf文件,它的工作正常,但如果我尝试阅读40mb pdf文件服务器响应只有"数据:application / pdf; base64,"。 file_exists返回true。
答案 0 :(得分:0)
PHP在php.ini
文件中有几个可能导致问题的设置。
memory_limit
- 这几乎肯定是问题所在; PHP必须将所有数据加载到内存中才能进行处理。尝试将此值增加到比您希望处理的最大文件大50%的值。
max_execution_time
- 如果脚本需要很长时间来处理所有数据,它将被终止。尝试增加此值。
我经常不得不在php.ini
中修改这些限制,以允许脚本处理大量数据。