ドラッグアンドドロップアップローダーがあります。ファイルリーダーを使用してデータをURLとして送信しています。
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はそれを受け取りますが、デコードすると「null」が返されます
$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情報を維持します。それで、それをデコードしたら、ファイルが無傷で保存できることをどのように判断しますか?
ファイルをデコードして保存するためのより良い方法はありますか?私は正確に何を間違っているのですか?
前もって感謝します!