1. Nachrichten
  2. Forum
    1. Unerledigte Themen
    2. Forenregeln
  3. Spenden
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. camp-firefox.de
  2. Hookah

Beiträge von Hookah

  • Ajax File Upload - Prozente werden nicht richtig angezeigt

    • Hookah
    • 2. März 2010 um 15:11

    Mit 3.6 ist es ja auch möglich Dateien per Ajax zu senden.

    Hab dann bei hacks.mozilla mal vorbeigeschaut und mir was zusammen gebastelt.
    Der Upload funktionert soweit nur leider wird die Anzeige für die Prozente nur einmal aktualiesiert und
    dann nichtmal mit 100 % sondern immer etwas zwischen 19 und 40% aber das Bild wurde fehlerfrei hochgeladen.
    Ich hab mich auch an dem Quelltext von http://demos.hacks.mozilla.org/openweb/uploadingFiles/ gehalten bzw mir
    das Javascript angeschaut : http://demos.hacks.mozilla.org/openweb/uploadingFiles/main.js

    Warum funktioniert das denn nun nicht?
    Jemand eine Idee?

    Falls wer fragen möchte warum ich hier frage: Ich hab gelesen das es zur Zeit nur mit dem FF funktioniert also
    dacht ich mir post ich das mal hier.

    Leider habe ich keine Beispiel PHP Datei gefunden ausser eine und nach dessen weg bin ich dann auch gegangen.
    Ich weiss leider nicht ob es auch was damit zu tun haben kann!

    Mein Uploadscript schaut so aus:

    Code
    var maxSize = 3597152;
    
    
       var boundary = '------multipartformboundary' + (new Date).getTime();
        var dashdash = '--';
        var crlf     = '\r\n';
    
    
    
    
    
    
    function handleFile(file) {
        // RegExp for JPEG mime type
        var imageType = /image\/jpeg/;
     
        // Check if match
        if (!file.type.match(imageType)) {
            return false;
        }
       // Check if the picture exceeds set limit
       if(file.size > maxSize) {
          alert("Choose a smaller photo!");
          return false;
       }
    
    
      return true;
    }
    
    
    
    
    
    
    function upload_pic(){
    
    
    var files = document.getElementById("inputFiles").files;
    
    
    if(handleFile(files[0])){
    
    
    
    
    
    
    
    
    		  var builder = '';
    
    
    		  builder += dashdash;
        		  builder += boundary;
      		  builder += crlf;
    
    
    		 builder += 'Content-Disposition: form-data; name="up"';
    
    		 builder += '; filename="' + files[0].fileName + '"';
    
    
    		builder += crlf;
    
    
            builder += 'Content-Type: application/octet-stream';
            builder += crlf;
            builder += crlf; 
    
    
            /* Append binary data. */
            builder += files[0].getAsBinary();
            builder += crlf;
    
    
    
    
    	builder += dashdash;
    	builder += boundary;
    	builder += crlf;
    
    
    	builder += dashdash;
    	builder += boundary;
    	builder += dashdash;
     	builder += crlf;
    
    
    
    
    	var xhr = new XMLHttpRequest();
    
    
    		xhr.upload.addEventListener("progress", function(e) {
     		 if (e.lengthComputable) {
     		   var percentage = Math.round((e.loaded * 100) / e.total);
    
    
    
    		   document.getElementById('progress').innerHTML = percentage+'%';
    			}
    		}, false);
    
    
    
    
    
    
    	xhr.open("POST", "kontakt_pic.php");
    	xhr.setRequestHeader('content-type', 'multipart/form-data; boundary=' 
            + boundary);
    
    
    	xhr.overrideMimeType('text/plain; charset=x-user-defined-binary;');
    
    
    	
    
    
    
    
    
    
    
    
    	xhr.sendAsBinary(builder);
    
    
    	
    	}
    }
    Alles anzeigen

    var builder ist leider notwendig da ich sonst im PHP Script die Datei nicht bekomme (weil ich nicht weiss wie es geht
    wenn ich nur xhr.sendAsBinary(files[0].getAsBinary()); benutzt)

    Durch builder kann ich den Namen des Uploadfeldes angeben womit ich dann im PHP Script die Datei weiter verarbeiten kann.

    Das Script sieht simpel so aus:

    PHP
    <?php
    
    
    $files = $_FILES['up']['tmp_name'];
    
    
    $imgtype =getimagesize($files);
    
    
    
    
    switch($imgtype[2]){
    
    
    case "1":
    
    
    	
    
    
    	$name = uniqid().".gif";
    
    
    	
    	break;
    
    
    case "2":
    
    
    	
    
    
    	$name = uniqid().".jpg";
    
    
    	break;
    
    
    case "3":
    
    
    	
    
    
    	$name = uniqid().".png";
    
    
    	break;
    
    
    } 
    
    
    
    
    
    
    $ziel = "t-bone/".$name;
    
    
    move_uploaded_file  ( $files  , $ziel );
    
    
    ?>
    Alles anzeigen

    Wie müsste ich das denn machen wenn ich einfach xhr.sendAsBinary(files[0].getAsBinary()); benutzen möchte?

    Vielleicht bin ich auch nur zu blöd um es zu finden.

    Helft mir auf die Sprünge bitte :)

    Schönen Nachmittag wünsch ich

    Edit: Ich teste das ganze mit FF 3.6 auf Windows unter xampp

Unterstütze uns!

Jährlich (2025)

60,4 %

60,4% (392,55 von 650 EUR)

Jetzt spenden
  1. Kontakt
  2. Datenschutz
  3. Impressum
Community-Software: WoltLab Suite™
Mastodon