$_FILES per AJAX

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • $_FILES per AJAX

    Ich hoffe, du bist nicht sauer, dass ich doppelpost's mach. Aber für jede frage immer wieder eine neues Thema wäre ja auch blöd denke ich.

    Und ein Edit bemerkt man ja nicht oder?

    Ist eh nur noch eine Frage die ich erstmal habe. ^^

    Ich will eine Datei ausm form mit ajax übertragen...

    Jetzt hab ich gelesen, dass es nicht machbar ist, wäre festgelegt wegen sicherheitslücke..
    Woanders lese ich wieder, dass man via ajax Bilder übertragen kann.


    Du müsstest es doch bestimmt wissen? :)
    Das wäre nämlich die letzte Funktion die mir fehlen würde.
  • Snowflake schrieb:

    Aber für jede frage immer wieder eine neues Thema wäre ja auch blöd denke ich.

    Genau das ist meine Philosophie ;) Verbessert die Übersicht, wenn ein Außenstehender den Thread irgendwann durchliest.
    Aber die Frage beantworte ich dir mit einem klaren: Dazu brauchst du eine serverseitige Programmiersprache (z.b. php ab version 5.2)

    Siehe

    • [coderwiki]http://www.coder-wiki.de/HowTos/PHP-APC-Installation-Linux[/coderwiki]
    • [wiki]Upload Fortschritt mit PHP + AJAX[/wiki]
  • Hey danke für die Antwort. :)
    Also ein Uploadscript habe ich schon, dass auch funktioniert.

    Ich habe es versucht mit deiner Funktion abzuschicken.
    [wiki]Formulare mit AJAX.. und ohne[/wiki]

    Aber wenn ich $FILES ausgeben lassen will, kommt nicht's an.
    Deswegen war die Frage, ob ich ein <input type="file"> nicht ohne weiteres mit dieser Ajax funktion verarbeiten kann?

    Wenn du das mit den zwei Links mir sagen wolltest, bzw helfen wolltest, sry hab ich dann wohl falsch verstanden. ^^


    EDIT:// Ahh ich habe mich was im Internet schlau gemacht, und über ajax geht es nicht so gut, da man in FIrefox etwas verändern müsste, und es dann aber auch nur mit FF funktioniert.
    Jetzt hab ich was von iframe gelesen. Aber was soll das bringen? $_FILES wird doch nicht mitgeschickt?

    Also mein Script sieht wie folgt aus.
    Man hat ein Textfeld, und eine checkbox namens Foto.
    Geprüft wird nach abschicken:

    Ist die Checkbox nicht aktiviert, wird einfach nur der Text eingetragen.
    Ist die Checkbox aktiviert, wird per if abfrage, mein Uploadscript included.

    Wie soll man da was mit Iframes machen? ^^

    Ich bräuchte ja eigentlich nur, dass mir AJAX $_FILES übergibt...

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von Snowflake ()

  • Hallo, hier auch mein erster Post :D und ich habe genau das gleiche vor wie der Post-Ersteller. Ich möchte, dass User Dateien hochladen kann. Da ich diese Funktion gerne für ein CMS benutzen würde, kann ich ja nicht vorschreiben, dass die Benutzer des CMS alle dieses Programm/Tool auf ihrem Server installieren. Ist es denn möglich die Dateien ohne Fortschrittsanzeige via Ajax hochzuladen? D.h. der User klickt auf Absenden und es erscheint der Text "Bitte warten Bild wird hochgeladen" oder eben "Fertig. Bild hochgeladen". Mir würde eine simple Erklärung schon reichen, da ich PHP sehr gut und Ajax sowie Javascript in den Grundlagen behersche! Ich verstehe nur das Prinzip nicht ganz... Ist soetwas überhaupt möglich

    EDIT:\\ Okay, mein Freund wies mich gerade auf ein Tutorial hin, welches er gefunden hat. Da wird mein Problem behandelt. Es steht nur uploading.... oder File successfully uploaded da. Keine %-Anzeige... Link

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Kekub ()

  • Ich muss das garnicht mal mehr über Ajax machen. Die Lösungvon d0nut mit dem hidden Iframe ist genial.

    Einzige Problem ist, dass es die Status.php anmeckert...

    Quellcode

    1. Call to undefined function apc_fetch() in ajax\status.php on line 2


    Hat bei dir alles funktioniert? :)

    EDIT:// Also auf meinem Server läuft auch die richtige Version denke ich. "PHP Version 5.2.4"

    Edit2://.
    Ich glaub ich weiß wieso. ^^
    "Diese » PECL Erweiterung ist nicht Teil von PHP."

    Mhh schade eigentlich. Auf meinem Server kann ich es installieren. Aber nachher auf dem Webspace wohl eher nicht. ^^

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von Snowflake ()

  • d0nut schrieb:

    naja, APC muss nicht immer vom Hoster aktiviert sein. Da hast du aber keinen Einfluss drauf.
    Wenn das nicht klappt, klappt die Statusabfrage nicht. Dann kannst du nicht mehr tun als abzufragen ob die Zieldatei schon existiert oder nicht. Aber dazu brauchst du auch kein AJAX.
    Ja genau. Aber okay, ohne Statusanzeige ist das Script auch toll.
    Die Anzeige wäre nur das Sahnehäubchen gewesen... Ob man es für ein Bilderuploadscript wirklich benötigt, ist zu bezweifeln.
    Gerade wenn die maximale Dateigröße nicht mehr als 2 Mb haben darf.

    Trozdem tolles Script von dir :)
    Ich hab in den letzten paar Tagen mehr gelernt, als ich in einem halben Jahr gelernt habe. ^^

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von Snowflake ()

  • Ich würde sagen, erstmal meine letzte Frage... danach sollte ich mich was mit Javascript und Ajax beschäftigen...

    Ich hab mal wieder Denkfehler. Vlt sollte ich echt eine Paus machen...

    Das ist wohl nicht wirklich möglich oder?

    Quellcode

    1. <\iframe src="topic_up.php" name="hidden_upload">
    2. <\form method="POST" action="topic_up.php" target="hidden_upload" enctype="multipart/form-data" onSubmit="sendRequest('text='+this.text.value,'go_v.php');\">
    3. <\input type="file" name="userfile" />
    4. <\input type="text" name="text" value="hallo" />

    Also was ich damit meine, dass ich uploaden kann, und dabei einen text per sendRequest in die datenbank schreiben zu lassen?

    (Die \ davor bitte wegdenken... WEnn ich es ohne schreibe, formatiert er direkt um)
  • Oh toll, das funktioniert ja sogar.
    Eben als ich rumexperementiert hatte, ging nichts... Oo

    Das einzige Problem, ich hab in requestHandler ein

    alert(req.responseText); und ein location.reload(); eingebaut, damit ich Meldungen ausgeben kann, wie erfolgreich gelöscht oder so... und danach die Seite aktualisiert wird...

    Problem beim Upload script ist, dass der alert jetzt den Upload unterbricht. Aber ich eignetlich diesen alert benötige...

    Lasse ich den alert raus, läd er mein bild hoch, und schreibt die daten die ich übermittel in meine datenbank. So soll es eigentlich auch sein... nur nicht, dass der alert vorzeitig den upload unterbricht... ^^
  • d0nut schrieb:

    der alert sollte ja nur zum Testen dienen ;) Musst dir was ähnliches zur Ausgabe einfallen lassen.
    Oh ja hatte ich bis eben auch... Aber ich denke nie weit genug.

    Nach erfolgreichem Upload, wollte ich einfach eine Weiterleitung auf die Startseite machen... äätsch... geht ja nicht, da es ein Iframe ist.. Der iframe wird weitergeleitet.. Bringt mir nicht wirklich was. ^^

    Deswegen hatte ich ja handelResponse auch so umgebaut... ^^

    Quellcode

    1. function handleResponse() {
    2. if ((req.readyState == 4) && (req.status == 200)) {
    3. alert(req.responseText);
    4. location.reload();
    5. }
    6. }


    Problem hierbei ist, dass sofort ein Fenster ausgegeben wird, wenn ich auf Abschicken klicke. Das Stoppt natürlich den Upload direkt.

    Gibt es eine andere möglichkeit, dass ich nach erfolgreichem Upload weitergeleitet werden, und nicht der Iframe? :D

    Jetzt weiß ich wieso... ach sonst geb ichs einfach dran, und lasse den themen insert normal ohne ajax...

    Problem ist, ich frage ob die datei hochgeladen wurde.

    Quellcode

    1. $result = move_uploaded_file($_FILES['userfile']['tmp_name'],$new_filename);
    2. if($result>0)
    3. {
    4. echo "test"; }


    naja der ändert sich ja erst nachher, nachdem die datei hochgeladen ist.... aber ajax fragt ja direkt beim script zugriff danach... deswegen...

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von Snowflake ()

  • Ohje ich glaub ich habe sehr viel Müll gelernt.

    Das mit dem if($result>0), hatte ich in einem Praktikum bei einem Webdesigner/programmierer gelernt.

    Aber ich denke, dass diese Art von Uploaden und Formulare per Ajax schicken wohl viel besser ist, wenn man APC auf seinem Webspace hat... Da das Abfragen und Weiterleiten ja dann viel leichter wird.

    Denn so fällt mir gar keine Lösung ein, da alles im Iframe gelöst wird, und eine Weiterleitung nur immerhalb dem Iframe stattfindet.

    Aber ich sag trozdem danke, dass du mir die ganze Zeit geholfen hast, und so viele "dummen" Fragen beantwortet hast. :)
  • eine nicht dumme Idee kommt mir gerade... Vergiss den kompletten AJAX/JavaScript Part... und setze nur das hier in den IFRAME:

    Quellcode

    1. $result = move_uploaded_file($_FILES['userfile']['tmp_name'],$new_filename);
    2. if($result) {
    3. echo '<script type="text/javascript>alert("Upload fertig"); </script>';
    4. }


    Mehr Status kannst du ohne APC nicht haben.
  • Hey danke, dass du dir gedanken drüber machst. Deine Idee ist garnicht schlecht..
    Aber mein Problem bleibt weiter bestehen.

    Also es ist ja so aufgebaut.

    go_upload.php:
    Beinhaltet den Formellen teil. Bei submit wird per sendRequest auf topic_upload.php weitergeleitet, und im hintergrund öffnet sich via Iframe auch topic_upload.php

    Abgefragt wird in der Topic_upload, ob die checkbox foto aktiviert wurde.

    Wenn nicht, soll er einfach Text in die Datenbank schreiben... wenn ja, wird das bild hochgeladen, und nachdem es hochgeladen wurde, wird der text in die datenbank geschrieben.

    Problem hierbei ist ja nur jetzt, dass ich nach erfolgreichem Text in die Datenbank schreiben oder erfolgreichem Bilderupload, nur den Iframe aktualisieren kann, und nicht die go_upload.php, die ja aktualisiert werden soll, da mir die topic_upload.php rein garnichts bringt, da sie als Iframe läuft. ^^

    Deswegen glaub ich es geht garnicht ohne APC, dass man die Seite nachr erfolgreichem Upload aktualisieren kann.


    Aber mir kommt gerade immoment eine andere Idee. DIe werde ich mal testen, und dann gucken ob ich wieder mist gedacht habe, oder doch nicht :D
  • d0nut schrieb:

    Ich dachte du wolltest unbedingt den alert ;)
    Der alert ist sogar die einfachste Lösung. Denn ob der alert vom iframe oder von der Hauptseite aufgerufen wird, merkt der Benutzer nicht.
    okay meine andere Idee scheitere... ^^
    (= aber wenn ich das einbaue:

    Quellcode

    1. if(req.responseText != "") {
    2. alert(....);
    3. }

    Kommt trotzdem direkt nach abschicken des Scriptes, ein leerer Alert. *kopfkratz*