Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 11

Thema: Ajax Upload mit Progressbar

  1. #1
    Kaiser(in)
    Registriert seit
    29.03.2009
    Ort
    1011 1111 1011 WorldWideWeb
    Beiträge
    2.439
    Danke
    2
    Bekam 6 mal "Danke" in 6 Postings

    Standard Ajax Upload mit Progressbar

    Hi,
    ich versuche seit 3 Tagen, einen Ajax upload zu realisieren. Wie ich aus fertigen Scripten wie tesupload ond UberUploader weiss, benutzen die alle Perl. Nach langem lernen (xD) ist dann folgendes zustandegekommen:
    Code:
    #!/usr/bin/perl -w
    use strict;
    use CGI;
    use CGI::Carp qw ( fatalsToBrowser );  
    use CGI qw/:standard/;
    use CGI::Cookie;
    use CGI qw(:cgi);                                         
    use File::Copy;                                            
    use File::Path;       
    use File::Basename;                                     
    use IO::File;  
    use Digest::MD5 qw(md5_hex);
    ##  Upload Filesize  Bits   Bytes    MegaBytes
    $CGI::POST_MAX =      1024 * 1000  * 100;
    sub writeFile {
      my ($filename,$contents) = @_;
      open (FILE,">$filename");
      print FILE "$contents"; 
      close (FILE);
      return 1;
    }
    print "Content-type: text/plain; charset=utf-8\n\n";
    @query=split(/&/, $ENV{QUERY_STRING});
    %params={};
    foreach (@query) {
        @cur=split(/\=/, $_);
        $params{"@cur[0]"}="@cur[1]";    
    }
    %cookies = fetch CGI::Cookie;
    if (exists($params{"id"})) {
        # Dateinamen per MD5
        $configfl1="../htdocs/tmpinf/".md5_hex($params{"id"}).".upload.size.inf";
        $size = $ENV{'CONTENT_LENGTH'};
        if ($size <= 1024 * 1000 * 100) {
            writeFile ($configfl1, $size);
        } else {
            writeFile ($configfl1, "oversize");
            exit;
        }
        $postRequest = new CGI;  
        $fhandle=$postRequest->upload("file");
        unless ($postRequest->tmpFileName($fhandle)) {
            writeFile($configfl, "request_failed");
            exit;
        }
    } else {
        print "Fehler!";
    }
    Habe das dann mit jQuery kombiniert und hat dann auch fast geklappt, nur wurde das Perl skript - genau wie bei PHP erst nach erfolgreichem & vollständigem hochladen der Datei ausgeführt, wodurch die Sache natürlich ihren sinn verloren hat (die Progressbar war ewig bei 0 und dann eben sofort bei 100%). Kann ich in der ersten zeile Perl iwie dazu anweisen, einfach munter anzufangen, egal ob die Datei nun hochgeladen ist oder noch nicht?

    Ich bin dann noch auf die PHP-Extension APC (php_apc.dll) gestpßen, jedoch läuft das nicht auf meinem Server (php.ini nicht zugänglich, modul deaktiviert) und bei mir lokal bekomme ich von apc_fetch() immer nur false anstadt ein array mit daten zum upload. (Ich habde mich dabei nach diesem Tutorial gerichtet).

    Hat jemand eine Ahnung, warum das Perl Skript nicht gut läuft oder was ich mit APC falsch mache? Bin echt am verzweifeln. Vielen Dank schon im vorraus an alle die sich Gedanken machen!
    Achtung: Dies ist ein alter Thread im HTML und Webmaster Forum
    Diese Diskussion ist älter als 90 Tage. Die darin enthaltenen Informationen sind möglicherweise nicht mehr aktuell. Erstelle bitte zu deiner Frage ein neues Thema im Forum !!!!!
    Geändert von Tobse (30.09.2010 um 22:12 Uhr)
    Der, der weiß dass er nichts weiß, weiß mehr als der, der nicht weiß, dass er nichts weiß.
    Wer nach etwas fragt, geht grundsätzlich das Risiko ein, es auch zu bekommen!

  2. #2
    Pion
    Gast

    Standard AW: Ajax Upload mit Progressbar

    Hehe, Perl ist auch ein Interpreter Sprache...

    APC hatte ich für soetwas schon benutzt und es hat wunderbar geklappt, alternativen wäre zb :
    http://demo.swfupload.org/v220/index.htm

  3. #3
    Kaiser(in)
    Themenstarter

    Registriert seit
    29.03.2009
    Ort
    1011 1111 1011 WorldWideWeb
    Beiträge
    2.439
    Danke
    2
    Bekam 6 mal "Danke" in 6 Postings

    Standard AW: Ajax Upload mit Progressbar

    Ja Perl wird interpretiert, aber in den Demos klappt das doch mit Perl ... ? Flash will ich ungern nehmen wegen den Mac Usern und weil langsam aber sicher stirbt, so ähnlich wie es Java-Appltes schon vor 10 jahren waren.
    Der, der weiß dass er nichts weiß, weiß mehr als der, der nicht weiß, dass er nichts weiß.
    Wer nach etwas fragt, geht grundsätzlich das Risiko ein, es auch zu bekommen!

  4. #4
    Pion
    Gast

    Standard AW: Ajax Upload mit Progressbar

    Ich kenn Perl nicht wirklich aber ich glaube nicht das es uffn Dämon läuft

    Wie dem auch sei mach es doch mit APC das klappt, aber wenn du schon so ne Funktion willst und nicht mal PHP INI verändern kannst tut es mir Leid und du bauchst so eine Funktion nicht,...

    Ansonsten kannst auch die DSL Geschwindigkeit ermitteln und vorher die Datei größe ermitteln und anhand der Werte ne Progressbar machen , die ist zwar nicht genau aber so kann dir keiner helfen...

  5. #5
    Kaiser(in)
    Themenstarter

    Registriert seit
    29.03.2009
    Ort
    1011 1111 1011 WorldWideWeb
    Beiträge
    2.439
    Danke
    2
    Bekam 6 mal "Danke" in 6 Postings

    Standard AW: Ajax Upload mit Progressbar

    Ich kann die php.ini "theoretisch" schon editieren, aber ich weiss weder wo sie ist, noch wird ein server-neustart so schnell klappen. Aber wir können ja mit XAMPP anfangen xD.
    Die Extension ist ja bei xampp dabei, hab daraufhin also xampp/php/php.ini geändert, apc läuft. Aber die Funktion apc_fetch() (So wie im Tutorial erklärt) gibt mir immer false.
    Der, der weiß dass er nichts weiß, weiß mehr als der, der nicht weiß, dass er nichts weiß.
    Wer nach etwas fragt, geht grundsätzlich das Risiko ein, es auch zu bekommen!

  6. #6
    Pion
    Gast

    Standard AW: Ajax Upload mit Progressbar

    ja ohne Code kann man dir nicht helfen, hast du den auch ein APC_UPLOAD_PROGRESS Hiddenfeld etc?

    Wenn nein Google mal nach nen Tutorial

    Edit:
    Hab gerade gelesen das Perl anscheinend solche Variante von Haus aus bietet

  7. #7
    Kaiser(in)
    Themenstarter

    Registriert seit
    29.03.2009
    Ort
    1011 1111 1011 WorldWideWeb
    Beiträge
    2.439
    Danke
    2
    Bekam 6 mal "Danke" in 6 Postings

    Standard AW: Ajax Upload mit Progressbar

    Ja, das input hab ich:
    PHP-Code:
            $c="<h1>".$l->get("upload_page_headline")."</h1>"
            
    ."<iframe name=\"upload_iframe\" id=\"upload_iframe\"></iframe>"
            
    ."<div id=\"upload_file_form\"><a>".$l->get("upload_select_file")."</a>"
            
    ."<form action=\"uploader/upload.php\" method=\"POST\"  target=\"upload_iframe\" id=\"upl_fileform\"  enctype=\"multipart/form-data\">"
            
    // Hier das hidden
            
    .'<input type="hidden" name="APC_UPLOAD_PROGRESS" value="'.session_id().'"/>'
            
    ///////////////////////
            
    ."<input type=\"file\"  name=\"file\"></form><input type=\"button\"  onclick=\"startUpload()\"  value=\"".$l->get("upload_startbutton")."\"></div>";
    // weiterer, unwichtiger teil 
    Dann prüft js auf uploader/get_process.php:
    PHP-Code:
    <?php
    session_start
    ();
    $ar=apc_fetch("upload_{".session_id()."}");
    include(
    "../includes/functions.php");
    // Hier eine ausgabe
    file_put_contents("ar.txt""upload_{".session_id()."}");
    $p=percent((int) $ar["current"], (int) $ar["total"]);
    // ausgabe an JS, dass die hochgeladene Datei verarbeitet wird
    if ($p==100) exit("conv");
    // ansonsten die Prozentzahl des Upload-Fortschritts
    exit(":".$p);
    ?>
    und noch upload.php
    PHP-Code:
    <?php
    session_start
    ();
    if (isset(
    $_FILES["file"])) {
        
    move_uploaded_file($_FILES["file"]["tmp_name"], "../upload_tmp/".session_id().".tmp");
    }
    ?>
    EDIT:
    hab grade noch in upload.php $_POST["APC_UPLOAD_PROGRESS"] in ne datei reingeschrieben, kommt beim server an und ist auch == session_id() und meinem cookie im browser.
    EDIT2:
    die demo vom tutorial (http://www.easy-coding.de/wiki/php/u...-php-ajax.html) funktioniert auch nicht.
    Geändert von Tobse (30.09.2010 um 21:15 Uhr)
    Der, der weiß dass er nichts weiß, weiß mehr als der, der nicht weiß, dass er nichts weiß.
    Wer nach etwas fragt, geht grundsätzlich das Risiko ein, es auch zu bekommen!

  8. #8
    Pion
    Gast

    Standard AW: Ajax Upload mit Progressbar

    Doch das geht schon, irgentwo ist der Fehler debugg mal richtig, verschieb mal das Hiddenfeld ganz nach oben nach das FORM

    Irgent so ein dummer Fehler war es bei mir vor einigen Jahren auch

  9. #9
    Kaiser(in)
    Themenstarter

    Registriert seit
    29.03.2009
    Ort
    1011 1111 1011 WorldWideWeb
    Beiträge
    2.439
    Danke
    2
    Bekam 6 mal "Danke" in 6 Postings

    Standard AW: Ajax Upload mit Progressbar

    Das steht schon ganz oben. In der Demo hab ich die status.php auch mal geändert. Da kommt aber immer nur
    Code:
    bool(false)
    daraufhin hab ich dann in die status.php das rein:
    PHP-Code:
    <?php
    error_reporting
    (E_ALL);
    $str="upload_{".$_GET['uid']."}";
    $arr=apc_fetch($str);
    var_dump($arr);
    echo 
    $str;
    ?>
    und sie dann manuell mit der ?uid= id aus dem Formular-Quelltext aufgerufen. Die Ausgabe:
    Code:
    bool(false) upload_{4ca4d675aba96}
    Die Demo git per JS auch immer die ausgabe der status.php aus, da steht auch während des ganzen uploads immer bool(false) .
    EDIT:
    Kann man nicht der .dll ne -help flag geben und sichd ann per kommandozeile genaueres ansehen?
    Der, der weiß dass er nichts weiß, weiß mehr als der, der nicht weiß, dass er nichts weiß.
    Wer nach etwas fragt, geht grundsätzlich das Risiko ein, es auch zu bekommen!

  10. #10
    Pion
    Gast

    Standard AW: Ajax Upload mit Progressbar

    Hast du die ganzen PHP Einstellungen den vorgenommen????

    Was passiert bei
    Code:
    $var = 'muh1'; apc_store('muh', $var); var_dump(apc_fetch('muh'));

Ähnliche Themen

  1. Upload Formular/Progressbar Problem
    Von Pion im Forum PHP Forum - Apache - CGI - Perl - JavaScript und Co.
    Antworten: 2
    Letzter Beitrag: 17.07.2009, 18:28
  2. ProgressBar Problem
    Von Unregistriert im Forum Forum für alle anderen Programmiersprachen
    Antworten: 6
    Letzter Beitrag: 14.11.2008, 18:02
  3. ProgressBar
    Von RedFighter im Forum Forum für Grafiken und Bildbearbeitung
    Antworten: 5
    Letzter Beitrag: 23.06.2008, 13:28
  4. ajax - Serverlastig?
    Von Dragon-D im Forum PHP Forum - Apache - CGI - Perl - JavaScript und Co.
    Antworten: 4
    Letzter Beitrag: 17.01.2007, 15:07
  5. Ajax???
    Von andi1804 im Forum PHP Forum - Apache - CGI - Perl - JavaScript und Co.
    Antworten: 6
    Letzter Beitrag: 26.09.2006, 23:58

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •