1
我有一個拖放上傳器。我正在使用文件讀取器將數據發送爲URL。如何解碼並保存從js發送到php的文件
var files = evt.dataTransfer.files;
for (var i = 0, f; f = files[i]; i++) {
var start = 0;
var stop = files[0].size - 1;
var reader2 = new FileReader();
var ext = f.name.substring(f.name.indexOf(".")+1);
reader2.onloadend = function(evt) {
if (evt.target.readyState == FileReader.DONE) { // DONE == 2
$.post("/process/upload.php",{"blob":evt.target.result,"extension":ext},function(data){
console.log(data);
});
}
};
var blob = f.slice(start, stop + 1);
reader2.readAsDataURL(blob);
}
PHP臨危它,但一旦我對其進行解碼,我得到 「空」 返回
$extension = $_POST['extension'];
$file = base64_decode($_POST['blob']);
$filePath = "../tmp/monkey.".$extension;
echo json_encode(base64_decode($_POST['blob']));
我也試過:
if(file_put_contents($filePath,$file)){
echo json_encode("it worked");
}else{
echo json_encode("it failed");
}
編輯:我維持POST信息一路直到我解碼它。所以一旦我解碼它,我如何確定文件是完整的,可以保存?
有解碼和保存文件的更好方法嗎? 我究竟做錯了什麼?
在此先感謝!
感謝您的快速答覆。我嘗試了兩個版本,我仍然收到null或一個空字符串。 –
什麼值給null?你可以var_dump($ HTTP_RAW_POST_DATA,file_get_contents('php:// input'))'看看你是否得到了預期的結果? –
當我回顯file_get_contents('php:// input');我得到了base64 +的擴展名,當我回顯$文件時,我得到一個空字符串。當我回顯$ post_obj時,我得到Null。 –