![](/img/trans.png)
[英]Sending data (image and some other parameters) to php by using javascript XMLHttpRequest
[英]XMLHttpRequest sending .PDF to PHP and saving on server, results in some data corruption
我有一个blob形式的pdf文件,我正在尝试发送到php以将其保存在我的网络服务器本地。 目前,如果我使用saveAs()在本地保存pdf,则pdf是可读且未损坏的。 但是,一旦数据以formdata的形式发送到我的php脚本,它就会保存在更大的文件大小中,这会丢失数据,最终无法在adobe reader中打开。
我把两个pdf差异化了,你可以看到certian字符没有被复制过来。
我正在使用FileReader读取blob,并在结果中附加formdata。 然后我使用XMLHttpRequest将数据发送到我的pdf,在那里它写入文件。
我认为这是一个编码错误,但我对文件如何编码以完成我自己的受过教育的调查还不够了解。
function transferData(){
var data = new FormData();
var reader = new FileReader();
reader.readAsBinaryString(blobHolder);
reader.addEventListener('loadend',
function(){
data.append("data" , reader.result);
var xhr2 = new XMLHttpRequest();
xhr2.open( 'post', 'php/savefile.php', true );
xhr2.send(data);
});
}
<?php
if(!empty($_POST['data'])){
$data = $_POST['data'];
$fname = "serverGeneratedPDF.pdf";
$file = fopen("../upload/" .$fname, 'w+');
fwrite($file, $data);
fclose($file);
}
?>
想要用我的工作方式更新这个问题。
我最终将整个blob对象作为formData发送,而不是使用FileReader。 在我的PHP文件中,我然后使用了file_get_contents()函数,最终保存了这一天。 它能够从发送的blob中提取出来的“数据”!
更新的代码:
JS:
function transferData(){
var data = new FormData();
data.append('sentBlob', blobHolder);
var xhr2 = new XMLHttpRequest();
xhr2.open( 'post', 'php/savefile.php', true );
xhr2.send(data);
}
PHP:
<?php
$data = file_get_contents($_FILES['sentBlob']['tmp_name']);
$fname = "serverGeneratedPDF.pdf";
$file = fopen("../upload/" .$fname, 'wb');//creates new file
fwrite($file, $data);
fclose($file);
?>
我的“啊哈”时刻正在弄清楚两件事:
希望这有助于某人!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.