ingobar: fopen geht nicht

Beitrag lesen

<input type="file" value="Importieren" id="input_filepath" size="10">

Du machst einen Dateiupload? Hast du den richtigen Content-Type im <form> gesetzt?

Tue ich das? Vielleicht sollte ich es genauer erklären:
1. Es ist kein Fomular, da ich das mit AJAX machen möchte.
2. Ich lese den Wert im input-Feld mit JS aus und mache dann dies:

function read_rtf_file_data() {
 editklasse_ajax_db_anfrage = null;
 editklasse_ajax_db_anfrage = erzeugeDB_Anfrage();
 if (editklasse_ajax_db_anfrage!=null) {
  var url = "editclass_readrtf.php";
  data2send = "filepath="+escape(document.getElementById("input_filepath").value);
  editklasse_ajax_db_anfrage.open("POST", url, true);
  editklasse_ajax_db_anfrage.onreadystatechange = zeigeBestaetigung_schuler;
  editklasse_ajax_db_anfrage.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
  editklasse_ajax_db_anfrage.send(data2send);
 } else {
  document.getElementById("feedback_data").innerHTML = "Es konnte keine Verbindung zum Server aufgebaut werden.";
  document.getElementById("feedback").style.visibility = "visible";
  document.getElementById("speichern").focus();

}
}

Muss ich da den setRequestHeader anders setzen? Ich dachte, dass ich nur den Pfad zur Datei hier verarbeite.

Dateien stehen nicht in $_POST, sondern in $_FILES. Dort ist pro Datei ein Array mit diversen Metadaten vorhanden, auch der Pfadname zur temporären Datei, die hochgeladen wurde.

Auch bei meiner Konstruktion?

Abgesehen davon heißt der Arrayindex so, wie das input-Feld. Und wenn das Feld "input_filepath" heißt, wirst du es nicht unter $_POST["filepath"] finden.

Da ich ja keine <form> verwende nicht. Aber vielleicht sollte ich das besser, oder?

Ich habe es auch direkt mit

file_exists("/Users/username/Documents/Allgemein/__Jahr 0607/liste.rtf")

Direktzugriff auf die Datei beim User ist nur in ganz speziellen Ausnahmefällen möglich. Hast du so einen Spezialfall?

Keine Ahnung. Welche Spezialfälle gibt es denn? Die ganze Anwendung läuft lokal und wird auch in Zukunft erstmal lokal laufen.

Debugging: Lasse dir immer ausgeben, nach welcher Datei tatsächlich gesucht wird, indem du den Dateinamen mit ausgibst. Sonst _glaubst_ du nur, dass du auf die vorhandene Datei zugreifst, in Wirklichkeit aber greifst du die ganze Zeit ins Leere!

Wie muss ich denn das codieren?

Ich weiß, Fragen über Fragen. Aber ich habe im Internet irgendwie sonst nichts gefunden, was mir weiterhelfen kann. Kennst du nicht ein Tutorial, wo ich mal zu diesem speziellen Problem etwas nachlesen kann?