# Ajax (+ PHP) - Dateiupload



## shorty (26. September 2007)

Guten Tag,

ich wollte gernen einen Dateiuploader mit Ajax und PHP programmieren. Die Funktionsweise von Ajax kenne ich bereits, jedoch scheint der Upload an sich bei mir nicht zu klappen, sofern ich ihn über Ajax tätige. Nun meine Frage: Muss dort noch ein spezieller Header mitgesendet werden?

Mein derzeitger Code:


```
function AjaxLoader_Avatar (uploadavatar, file) {

	document.getElementsByName('uploadavatar')[0].value = 'Bitte warten...';
	document.getElementsByName('uploadavatar')[0].disabled = true;

	var req = reqObj();
	req.open('POST', 'content/profil/avatar_upload_avatar.php', true);
	req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
	req.send('uploadavatar=' + uploadavatar + '&file_u=' + file);
	
	req.onreadystatechange = function() {
		
		if(req.readyState == 4) {
		
			if(req.status == 200) {
			
				Loader();
				
				document.getElementById('uploadavatar').innerHTML = req.responseText;
				alert(req.responseText);
				
				setTimeout(Hider, 2000);
			
			}
		
		}
		
	}

}
```

Für den RequestHeader hatte ich auch schon "multipart/form-data" verwendet. Scheint aber damit auch nicht zu klappen? Was muss man bei einem Dateiupload noch beachten, der über Ajax realisiert werden soll?

Die PHP Datei greift auf $_FILES zu und lädt die Datei normalerweise per "move_uploaded_file()" hoch.


----------



## Sven Mintel (26. September 2007)

Ich glaube irgendwie nicht, dass man einen Dateiupload per AJAX hinbekommt...dazu müsste man den Inhalt der Datei vom Clientrechner auslesen können, und sowas geht mit herkömmlichem JS nicht.

Auf jeden Fall wirst du nicht mit move_uploaded_file() arbiten können, denn egal wie du es machst, ein echter Dateiupload findet nicht statt, und das Vorhandensein eines solchen wird bei move_uploaded_file() geprüft.

Ich lasse mich aber gerne eines Besseren belehren, falls ich falsch liege


----------



## Operator_Jon (27. September 2007)

Ich habe mal WOCHENLANG nach einem Dateiupload per Ajax gesucht und glaub mir, es geht nicht !
Wenn du mal googelst wirst du überall die selbe Antwort erhalten...
Ich habe dann als Lösung einen versteckten IFrame genommen, das funktioniert echt klasse!


----------



## shorty (27. September 2007)

Auf diese Iframe Sache bin ich auch schon gestoßen. Was mich daran hindert, ist die besagte Funktion "apc_fetch()". PHP kennt diese Funktion nicht und somit komme ich auch mit dem "Iframeuploadskript" nicht weiter...


----------

