Open Elfriede: Wie kann ich ein Blob an PHP-Ajax übertragen?

Beitrag lesen

var file = document.getElementById("upload").files[0];
var reader = new FileReader();
reader.readAsDataURL(file);
reader.onload = function(event) {
		var content = event.target.result;
		var blob = new Blob([content], {type: application/pdf});
		alert(blob instance of Blob);			// gibt true aus
		var myform = new FormData();
		myform.append("dragdropname", filename);
		myform.append("dragdropfile", blob);
		XMLHttpRequest...

Im Javascript sieht noch alles ok aus, aber im PHP-Script wird nur "data:application/pdf;base64," in die Datei gespeichert.

Es funktioniert alles so, wie es soll. Du fütterst blob mit der Ausgabe von readAsDataURL() – und genau das bekommst du dann auch geliefert: eine data:-URL.

Die Rohdaten bekommst du mit readAsArrayBuffer().

Davon unabhängig könntest du eigentlich file auch direkt an myform.append() übergeben. Den Sinn des Umweges über FileReader und blob sehe ich in diesem Beispiel nicht.

Weiterhin:

PHP:

$name = $_POST["dragdropname"];
$dateiname = $pfadphp."/files/".$name;
$tmpname = $_FILES["dragdropfile"]['tmp_name'];
file_put_contents($dateiname, file_get_contents($tmpname));

Ich gehe mal davon aus, dass das nur ein Test sein soll und du $name aus dem Formular nicht wirklich völlig ungeprüft als Dateinamen auf deinem Server benutzen willst.