[英]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.