2015-07-14 4 views
6

Ich habe ein Eingabefeld:

<input type="file" id="inputID" name="file"> 

Wenn eine Taste einreichen geklickt wird, eine JavaScript-Funktion ausgeführt werden soll (url: upload.php). Ich muss in der Lage $_FILES["inputID"]["tmp_name"] von diesem Eingabefeld zuzugreifen, so dass ich es auf upload.php als verwenden könnte

move_uploaded_file($_FILES["inputID"]["tmp_name"], $target_file) 

Ist das möglich?
Im Moment bekomme ich einen Fehler:

Notice: Undefined index: inputID

Jede Hilfe sehr geschätzt würde.

Vielen Dank! :-)

+1

Wenn Ihr '' Name 'Datei' ist, dann brauchen Sie' $ _FILES ["Datei"] ["tmp_name"] 'in PHP, und da dies auf dem Server ist, können Sie nicht von JavaScript darauf zugreifen. –

+1

Es ist nicht möglich, es sei denn, Sie speichern diesen Wert mit PHP in irgendwo und machen anschließend eine AJAX-Anfrage, um die Informationen zu erhalten. –

+0

dank euch beiden! – Mary

Antwort

0

Sie darauf zugreifen können, nachdem sie eingereicht wird, obwohl ich sehe nicht, warum Sie sollten:

<?php 
... 
$tmpname=$_FILES["file"]["tmp_name"] 
... 
?> 
... 
<script> 
var tmpname = <?=$tmpname?> 
... 
</script> 
... 

ich nicht klar sind, was Sie zu tun versuchen. Wenn Sie eine Ajax-Upload-Funktionalität wünschen, ist es besser, eine js-Bibliothek zu verwenden.

+0

Diese Methode geht davon aus, zuerst das Formular mit der ausgewählten Datei zu senden. Dann rendern Sie das Formular erneut und zeigen den von PHP gehandhabten tmp_name an. Aber auch wenn Sie tatsächlich mit JavaScript darauf zugreifen, wird der tmp_name bei jeder neuen HTTP-Anfrage geändert, so dass Sie sich nicht darauf verlassen können, den Server erneut damit aufzurufen. –

+0

Ich stimme zu, dass es nutzlos ist, aber es ist trotzdem zugänglich. – sivann

+0

Streng reden, ich denke ja. Aber wie du sagst, sehe ich keinen Nutzen davon :) –

3

move_uploaded_file() ist eine PHP-Funktion, die auf einer PHP-basierten serverseitigen Anwendung ausgeführt wird.

Es wird von PHP behandelt, wenn Ihr Formular übermittelt wurde.

Sie können nicht von JavaScript auf es zugreifen, bevor es gesendet wurde, wie Sie es auch asynchron mit einer XHR-Anforderung senden oder das Formular direkt an seine Handler-Route senden würden.

Verwandte Themen