2017-02-16 10 views
0

Ich versuche, eine Bilddatei hochzuladen und auf meinem Server mit dem Pfad zum Speicherort der Datei gespeichert in einer Mysql-Datenbank zu speichern. Ich verwende eine Ajax-Anforderung, die Daten zu senden, sondern habe ernsthafte Probleme alle Teile der Datei zugreifen:Fehler beim Zugriff auf fileData

PHP

<input type="file" id="upload_file" name='upload_file' style="width: 0px;height: 0px;"> 

fordert diese Javascript

function upload_photo(user_id) { 

    var file = document.getElementById('upload_file') 

    /* Create a FormData instance */ 
    var formData = new FormData(form); 
    formData.append('user_id', user_id) 
    formData.append('file', file) 
    request = new ajaxRequest() 
    request.open("POST", "edit_details.php", true) 
    request.setRequestHeader("Content-type", "multipart/form-data") 
    request.onreadystatechange = function() { 
     if (this.readyState == 4) 
      if (this.status == 200) 
       if (this.responseText != null) 
        O('page').innerHTML = this.responseText 
    } 
    request.send(formData) 

} 

Die Anfrage Nutzlast Aussehen wie folgt:

------WebKitFormBoundaryFA8fI4XH99ES61F6 
Content-Disposition: form-data; name="file" 

[object HTMLInputElement] 
------WebKitFormBoundaryFA8fI4XH99ES61F6 
Content-Disposition: form-data; name="user_id" 

1001 
------WebKitFormBoundaryFA8fI4XH99ES61F6-- 

Aber wenn ich einen var_dump ($ _ REQUEST) anrufe, druckt es

Irgendwelche Ideen? Ich habe mir Lasten angesehen, kann mich aber nicht durch dieses Problem arbeiten.

Ich sprach mit einem Professor an meiner Universität und er sagte, dass "multipart/form-data" kann ein Schmerz sein, mit zu arbeiten, und sagte, ich könnte besser mit einem PUT sein?

Antwort

1

Hier sind 2 Dinge zu erwähnen.

Zuerst müssen Sie auf der Client-Seite etwas mehr Arbeit in Javascript leisten, um mehrteilige Daten zu übertragen - ich vermute, dass Ihr Lehrer darüber gesprochen hat. Dafür verweise ich Sie auf this SO answer.

Zweitens, auf der Serverseite, im Gegensatz zu allen anderen Formulardaten, Dateien sind nicht in der $ _GET, $ _POST oder $ _REQUEST Array sondern in ihrem eigenen $_FILES array statt. Ich ermutige Sie, dies zu lesen, aber im Grunde wird PHP an einem temporären Speicherort hochgeladen, und Sie sollten die Datei an den endgültigen Speicherort kopieren - dann speichern Sie den Pfad in Ihre Datenbank.

Hoffe, das hilft!

+0

Das hilft enorm und hat mir eine Menge Zeit erspart, Vielen Dank –

Verwandte Themen