Javascript 在另一个应用程序中编码到base64并解码后,文件被破坏
正在使用Javascript 在另一个应用程序中编码到base64并解码后,文件被破坏,javascript,php,pdf,encoding,base64,Javascript,Php,Pdf,Encoding,Base64,正在使用jsPDF在客户端生成一个PDF文件,使用btoa()在base64中编码,发送到一个PHP API,在那里它被解码并保存为二进制文件,但它不起作用,我得到了一个格式错误的PDF PHP代码: $destination = 'test/file.pdf'; $content = base64_decode($content); $uploaded = file_put_contents($destination, $content); 如果我比较这两个文件(直接从前端下载的pdf文件和
jsPDF
在客户端生成一个PDF文件,使用btoa()
在base64中编码,发送到一个PHP API,在那里它被解码并保存为二进制文件,但它不起作用,我得到了一个格式错误的PDF
PHP代码:
$destination = 'test/file.pdf';
$content = base64_decode($content);
$uploaded = file_put_contents($destination, $content);
如果我比较这两个文件(直接从前端下载的pdf文件和从服务器下载的pdf文件),我得到的结果如下:
原始PDF文件片段(我不能透露完整文件):
后编码/解码一个:
是什么导致了这种差异?似乎是编码问题?我无法评论,因为我需要50个代表:)留下答案
确保您正确地完成了POST请求。尝试将另一个文件(例如图像文件)发布到服务器,而不是您的PDF文件,并尝试在服务器上打开发布的图像文件。似乎
btoa
无法很好地处理16位字符,这是怎么回事?请参阅:您是否解决过此问题?也遇到了这个…事实上,我正在发布base64编码字符串。我从两个方面比较了字符串,结果完全相同。如果您在客户端对pdf进行编码和解码,而不将数据发送到服务器。你会得到正确的pdf文件吗?是的,我会。使用atob()
还原btoa()
非常有效。所以,问题是从PHP解码它会得到不同的结果。(好主意)请检查一下。我认为已经描述了如何克服您的问题。另外,我将在客户端对pdf进行编码,并在服务器上对相同的pdf进行编码。并比较编码数据,