Upload-Fortschritt + Infos zur aktuellen Datei

Hallo liebe Leutchen,

mal wieder ein Problem von mir, bzw. ein Fehlen einer krativen Idee.
Ich habe folgende Ausgangssituation:

Ich lade ein Bild oder eine ZIP mit Bldenr hoch, diese werden skaliert zu einem Thumbnail und ein Wasserzeichen wird eingefügt.

Beim Klick auf den Knopf "Upload" blende ich per jQuery UI einen Dialog ein (siehe Codebox und angehängter Screenshot).

Code:
<tr>
							<td>
								<input type="submit" name="Submit" value="Hochladen" onclick="$('#upload').dialog('open');">
								<input type="reset" value="Zurücksetzen">
								<input type="hidden" value="<?php if(!isset($_POST['mode'])){ echo $_GET['mode'];} else { echo $_POST['mode']; } ;?>" name="mode" />
								
								<input type="button" name="Mehr Files" value="Mehr Files" onClick="start(); return false;">
							</td>
							<td>
								<input type="text" name="captcha" value="" width="50px">
								<input type="hidden" name="wert" value="<?php echo $wert ?>" />
							</td>
						</tr>

Ich möchte jedoch, dass mir in dem Dialog, dynmisch per JS am besten das jeweilige Bild ausgegeben wird, welches gerade hochgeladen wird (mit eventuellen Infos wie Dateigröße etc.).

Meine Idee war dies per jQuery zu machen (da ich die Libs davon eh einbinden musste).

Auszug aus der Upload-Prozedur:
PHP:
<?php
$name		= $_FILES['Bild']['name'][$i];
				$type 		= $_FILES['Bild']['type'][$i];
				$tmp_name	= $_FILES['Bild']['tmp_name'][$i];
				$size 		= ($_FILES['Bild']['size'][$i])/1024;
				$hash 		= md5($name.$type.$size.$tmp_name.time());  
				$pfad		= $database->GetSetting('PICTURE_PATH');
				$ZIP_Path	= $database->GetSetting('UNZIP_PATH').str_replace('.zip','', $name)."/";
				
				?>
					<script type="text/javascript"> setUploadStatus ('<? echo $name ?>','#footer') </script>
				<?php

?>

Passender jQuery-Teil:
Code:
function setUploadStatus(datei, div) {
    var htmlStr = $(div).text() + "<img src='images/loadingAnimation.gif'>";
    var htmlNeu = htmlStr

    $(div).html(htmlNeu + "<br>" + datei + " wird gerade hochgeladen...") 
}

Jedoch wird mir nichts in dem DIV angezeigt.
Hat jemand vllt eine bessere Lösung oder eine Idee woran es liegen könnte?
 
Ich habe mich nicht mit dem Code beschäftigt, aber wenn ich dich richtig verstanden habe, dann möchtest du genau _das_ Bild anzeigen, was gerade hochgeladen wird, richtig?
Das geht aber nicht. Das Bild wird ja zuerst Stückweise auf den Server übertragen und erst _dann_ kannst du es wiederum zum Client schicken und per Javascript anzeigen lassen. Ansonsten könntest du höchstens den Teil des Bildes anzeigen lassen, der bereits hochgeladen wurde.
Um das Bild gleich beim Upload anzuzeigen, müsstest du den Browser dazu bringen, das Bild selbst vom Rechner des Clienten zu laden. Soetwas wird aber soweit ich weiß in allen aktuellen Browsern verhindert. Im IE6 sollte es jedoch funktionieren.

Tut mir Leid, aber da wirst du wohl keine andere Möglichkeit finden.
 
Ne, ich habe ja per PHP Infos der Datei die gerade hochgeladen wird.
Ich würde gerne Infos der Datei (Größe, Name etc.) anzeigen lassen wollen in dem Div , aber nur von dem welches gerade hochgeladen wird.
 
Original von reaLInsanity
Ne, ich habe ja per PHP Infos der Datei die gerade hochgeladen wird.

Nein, hast du nicht. Das PHP-Script wird erst _dann_ ausgeführt, wenn die Datei vollständig(!) hochgeladen wurde. Erst dann stehen auch alle anderen Informationen für PHP(1) zur Verfügung.

Ich würde gerne Infos der Datei (Größe, Name etc.) anzeigen lassen wollen in dem Div , aber nur von dem welches gerade hochgeladen wird.

Dafür brauchst du eine andere Serverseitige Technik. Mit Perl sollte das afaik machbar sein. Nach meinem Kentnissstand ist soetwas mit PHP noch nicht möglich.


(1) Wie gesagt, Perl und andere Sprachen können bereits während es Uploads Zugriff auf die Daten haben.
 
Hm Mist.. stimmt klar...
So im Nachinein ist das logisch, schade :(

Hat denn jemand vllt eine Idee wie man soetwas mit Pearl o.Ä. realisieren kann?
 
Facebook verwendet dazu ein JavaApplet, das hat den Vorteil dass die Daten lokal vorliegen und ein Teil der Arbeit (zB scalieren) vom Client übernommen werden kann und der Server nur noch das Resultat prüfen muss.
 
Ja sowas verwendet StudiVZ bzw. SchuelerVZ ja glaube ich auch...
Aber ich habe leider überhaupt keine Ahnung voon der Programmierung von JavaApplets. :(
 
wie machen das die jungs von rapidshare?
die haben doch auch immer nen aktuellen fortschritt drin, von deinem upload und das ist glaube nix mit nem javaapplet
 
Original von 404
Die beste Lösung für dieses Probelm ist ein unsichtbares Flash Movie.

Würde ich nicht unbedingt sagen. Schnell ist sie sicherlich, aber man muss dann bedenken, dass ein großer Teil der User kein Flash hat und nix sieht. Insofern ist eine Technik, die das Problem serverseitig (und dann mit AJAX) angeht, kompatibler - aber eben auch aufwendiger.
 
aber man muss dann bedenken, dass ein großer Teil der User kein Flash hat und nix sieht.

Das war vielleicht früher mal so. Mittlerweile ist aufgrund von youTube & Co. das flash-plugin sehr weit verbreitet. Statistiken von Adobe sprechen von 98 %. Objektive Statisken kann ich leider keine finden. Die User die kein Flash installiert haben, dürften aber dennoch eine deutliche Minderheit darstellen.

Letztendlich kommt es auf seine Zielgruppe an.:rolleyes:
 
Danke erstnal für eure rege Diskussion :)

@404:
Werde mir mal den FancyUpload anschauen, vllt kann man ja damit etwas schönes zaubern und ich kann somit auf den nervigen ZIP-Upload verzichten.
Werde dann mal meine Ergebnisse posten :)

Danke an alle :)
 
Zurück
Oben