Я хочу создать файл pdf на моем сервере, отправляя контент через вызов API.
Что я делаю:
Создает запрос к стороннему API, используя xhr, и получает двоичный ответ, подобный приведенному ниже:
%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 открываются читателями без ошибок.
Что я делаю не так?