tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
4
ZUGRIFFE
437
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    paddy89 paddy89 ist offline Grünschnabel
    Registriert seit
    Aug 2011
    Beiträge
    4
    Ok ich bin am verzweifel.

    Ich habe vor ein kleines Uploadtool zu schreiben.

    Mit Html und php kann ich einen Multi upload machen, das ist kein Thema, nur ist es um das zu koennen muss ich bei meiner Form action="upload.php" angeben, damit Html weis welches script ausgefuer werden soll. Ich werde deswegen aber immer auf meine upload.php weitergeleitet und das sollte nicht sein.

    Wie es sein sollte: In meiner Form auf den Durchsuchenbutton klicken und dann die File auswaehlen, danach auf den Submitbutton klicken -> datei wird an meinen Server uebertragen ohne das weitergeleitet wurde oder das meine index.html neugeladen oder veraendert wurde.

    Ich habe schon soviel gegooglet aber nix passendes gefunden.

    Hoffe ihr koennt mir da weiterhelfen.

    Danke Mfg patrick
     

  2. #2
    CPoly CPoly ist gerade online Mitglied Weizenbier
    tutorials.de Premium-User
    Registriert seit
    Sep 2009
    Beiträge
    2.445
    Die einfachste Lösung, die auch ohne JavaScript funktioniert ist, dass du als Ziel (target Attribut) deines Formulars ein verstecktes IFrame angibst.
     

  3. #3
    Avatar von ComFreek
    ComFreek ComFreek ist offline [x] Let it be logic!
    tutorials.de Moderator
    Registriert seit
    Jun 2009
    Beiträge
    2.363
    Blog-Einträge
    4
    Die Lösung mit dem verstecktem IFrame ist natürlich die einfachste.

    Allerdings biete sich noch eine Lösung mit der neuen HTML 5 File API an. Aber a) wird das bei älteren Browsern nicht unterstützt, b) wahrscheinlich langsamer und c) müsstest du dein PHP-Skript umschreiben.
     
    mfg ComFreek

    Falls ich dir geholfen habe, würde ich mich über ein DANKE freuen!
    Kenn mich am besten aus in C++, WEB-Sprachen (PHP, HTML, JavaScript) und vllt. mehr
    [PHP] Überprüfen, ob Website erreichbarSicherheit in PHP-Codes schaffenGoogle Chrome-Extension für tutorials.dejson_compress()

  4. #4
    paddy89 paddy89 ist offline Grünschnabel
    Registriert seit
    Aug 2011
    Beiträge
    4
    Danke aber es sollte mit Javascript sein und ohne Iframe.
     

  5. #5
    Avatar von ComFreek
    ComFreek ComFreek ist offline [x] Let it be logic!
    tutorials.de Moderator
    Registriert seit
    Jun 2009
    Beiträge
    2.363
    Blog-Einträge
    4
    Okay, ich habe mal so ein kleines Skript geschrieben.

    Das ganze funktioniert mit der neuen HTML 5 File API. Mit der kann man Dateien (u.a.) binär einlesen und dann mit einem XMLHttpRequest-Objekt (AJAX) abschicken bzw. hochladen.
    Falls du damit noch nicht gearbeitet hast, könnte ich dir mein Tutorial empfehlen: Checksummen mit JavaScript & HTML 5 File API.

    Vielleicht wird folgendes aber auch ein Tutorial...

    Naja, zuerst etwas HTML:
    HTML-Code:
    <h1>File upload with JavaScript</h1>
        
    <hr />
    Status: <span id="status">Ready</span>
    <hr />
    
    <form action="" method="post">
      <input type="file" id="file_input" />
      <br />
      <button type="button" id="btnUpload">Upload with JS</button>
      <input type="submit" id="btnSubmit" value="Upload (normal)" />
    </form>
    Eigentlich brauchen wir keinen Form-Tag, aber es bietet sich an, wenn man später noch einen "echten" Abschick-Button implementieren möchte, wenn JS deaktiviert ist, oder die HTML 5 File API nicht unterstüzt wird.

    Dann implementieren wir noch eine Wrapper-Funktion zum Lesen der Datei:
    Code javascript:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    
    function updateProgress(evt)
    {
      document.getElementById('status').innerHTML = "Status: Processing";
    }
     
    function errorHandler(evt)
    {
      document.getElementById('status').innerHTML = "Status: Error ("+evt.target.error.code+")";
    }
     
    function readFile(file, callback)
    {
      var reader = new FileReader();
      reader.onload = function(evt)
      {
        document.getElementById('status').innerHTML = "Ready";
        if (typeof callback=="function")
          callback(file, evt);
      };
      reader.onprogress = updateProgress;
      reader.onerror = errorHandler;
      reader.readAsBinaryString( file );
    }
    Kurz gesagt: readFile() erstellt ein neues FileReader-Objekt, verknüpft die Events onprogress, onerror und onload mit eigenen Funktionen. Bei Erfolg beim Einlesen wird die Callback-Funktion (2. Parameter) aufgerufen. Unter anderem auch mit dem Parameter evt der den binären String enthält (evt.target.result).
    In meine oben genannten Tutorial ist die selbige Funktion, aber besser beschrieben.

    Dann setzen wir den onclick-Eventhandler für den Button:
    Code javascript:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    
    window.onload = function()
    {          
      document.getElementById("btnUpload").onclick = function()
      {
        var input = document.getElementById("file_input");
     
        if ( typeof FileReader=="undefined" || !input.files)
        {
          alert("Your browser doesn't support the HTML 5 File API!");
          return;
        }
        if ( input.files.length < 1 )
        {
          alert("Please select a file!");
          return;
        }
    Zuerst kommen ein paar Fehlerprüfungen, u.a. auf Support der HTML 5 File API und ob eine Datei ausgewählt wurde.

    Danach wenden wir unsere eigene readFile()-Funktion an:
    Code javascript:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    
    readFile(input.files[0], function(file, evt)
        {
          var xhr = new XMLHttpRequest();
          xhr.onreadystatechange = function()
          {
            if (xhr.readyState==4 && xhr.status==200)
            {
              document.getElementById("status").innerHTML = xhr.responseText;
            }
          }
          
          xhr.open("POST", "js_file_upload.php");
          xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
          xhr.send("file="+evt.target.result);
        });
      }
    }

    js_file_upload.zip
     
    mfg ComFreek

    Falls ich dir geholfen habe, würde ich mich über ein DANKE freuen!
    Kenn mich am besten aus in C++, WEB-Sprachen (PHP, HTML, JavaScript) und vllt. mehr
    [PHP] Überprüfen, ob Website erreichbarSicherheit in PHP-Codes schaffenGoogle Chrome-Extension für tutorials.dejson_compress()

Ähnliche Themen

  1. Upload Script - JPG KEIN Upload möglich
    Von Radanua im Forum PHP
    Antworten: 12
    Letzter Beitrag: 12.09.10, 21:32
  2. FTP-Upload...
    Von MorpheusR im Forum PHP
    Antworten: 4
    Letzter Beitrag: 25.11.07, 17:25
  3. PHP Upload per Ftp
    Von Greeven im Forum PHP
    Antworten: 23
    Letzter Beitrag: 11.05.07, 22:44
  4. upload über upload.aspx
    Von NightPain im Forum Visual Basic 6.0
    Antworten: 0
    Letzter Beitrag: 25.07.06, 18:19
  5. Upload mit Persits ASP Upload
    Von nafets im Forum ASP
    Antworten: 6
    Letzter Beitrag: 12.01.05, 09:07