Antworten auf deine Fragen:
Neues Thema erstellen

Ajax Upload mit JQuery

koma05

Aktives Mitglied

bin auf der suche nach einem ajax-upload-skript.
dabei bin ich mehrfach auf folgendes gestossen: Ajax upload - demo dazu: Ajax upload demo

den beispielcode habe ich nun bei mir zum test eingebunden. der upload scheint zu funktionieren, nur wird das upload.php skript nicht aufgerufen.

folgender codeausschnitt ist im beispiel enthalten:
Code:
$(document).ready(function(){

    /* example 1 */
    var button = $('#button1'), interval;
    new AjaxUpload(button,{
        //action: 'upload-test.php', // I disabled uploads in this example for security reasons
        action: 'upload.htm', 
        name: 'myfile',
        onSubmit : function(file, ext){
habe ihn geändert in:
Code:
$(document).ready(function(){

    /* example 1 */
    var button = $('#button1'), interval;
    new AjaxUpload(button,{
        action: 'upload.php', // I disabled uploads in this example for security reasons
        name: 'myfile',
        onSubmit : function(file, ext){
jetzt müsste ja die action die upload.php aufrufen. passiert aber nicht.

nutzt jemand diese ajax apload skript? hab ich was übersehen?
 

Tim1901091

Nicht mehr ganz neu hier

AW: Ajax Upload mit JQuery

new AjaxUpload(button,{
//action: 'upload-test.php', // I disabled uploads in this example for security reasons
action: 'upload.htm',


Ich weiß nicht genau wie die Methode AjaxUpload aufgebaut ist, aber anscheinend erwartet die ne Reihe von Parametern. In dem Beispiel wird die auskommentierte erste Datei mit einem Komma abgetrennt und übergeben! Vielleicht liegts daran.
Also erstell eifnach nochmal irgenden Kommentar oder so, der als "Parameter" übergeben wird.

Java zumindest meckert bei sowas zumindest immer.
 
Zuletzt bearbeitet:

koma05

Aktives Mitglied

AW: Ajax Upload mit JQuery

habs nun rausbekommen.
es wird schon in die upload.php gegangen. hab mal einen simplen js-alert eingebaut.
dann bin ich der sache auf den grund gegangen.
Code:
$(document).ready(function(){

    /* example 1 */
    var button = $('#button1'), interval;
    new AjaxUpload(button,{
        action: 'upload.php', // I disabled uploads in this example for security reasons
        name: 'myfile',
        onSubmit : function(file, ext){
bei name steht "myfile" und in der upload.php wird
Code:
$uploaddir . basename($_FILES['userfile']['name']);
verwendet.
userfile in myfile geändert und schon wird die hochgeladene datei verschoben...




Kenne ich nicht, probiere das mal, wenn Du das hinbekommst wäre das auch für mich interessant :)
er nutzt mootools (und nicht jquery)
die uploadgeschichte dort, schaut aber auch gut aus... mal sehen
 

koma05

Aktives Mitglied

AW: Ajax Upload mit JQuery

denke, man kann mit jquery-anweisungen darauf reagieren.
im beispiel wird nach erfolgriechen upload "onComplete" aufgerufen:
also im beispiel:
Code:
        onComplete: function(file, response){
            button.text('Upload');
                        
            // enable upload button
            this.enable();
            
            // add file to the list
            $('<li></li>').appendTo('#example1 .files').text(file);     
   
            $("#bildanzeigen").html('<img src="img/'+file+'" alt="upload erfolgreich" / >');
            $("#bildanzeigen").show();
        }
hier wird halt das hochgeladene bild einer liste
Code:
$('<li></li>').appendTo('#example1 .files').text(file);
hinzugefügt.

und ich habe zum test hinzugefügt, dass das hochgeladene bild gleich angezeigt wird
Code:
$("#bildanzeigen").html('<img src="img/'+file+'" alt="upload erfolgreich" / >');
            $("#bildanzeigen").show();


man kann auch festlegen welche dateitypen hochgeladen werden dürfen:
Code:
        onSubmit : function(file, ext){
            if (! (ext && /^(jpg|png|jpeg|gif)$/.test(ext))){
                    // extension is not allowed
                    alert('Error: nicht erlaubter Dateityp!');
                    // cancel upload
                    return false;
            }



und in der upload.php kann man ja auch noch was einbauen.
so schaut sie im moment aus:
PHP:
<?
$uploaddir = 'img/';
$uploadfile = $uploaddir . basename($_FILES['userfile']['name']);

//move_uploaded_file ist die Standard PHP-Funktion um Dateien auf dem Server zu verarbeiten
if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {
  echo "success";
} else {
  // Als echo keinesfalls false benutzen. Führt zu Konflikten mit dem Ajax-Request
  echo "error";
}
?>
 

Stefan

Administrator

Teammitglied
AW: Ajax Upload mit JQuery

Und wie meinst Du, könnte ich dieses Teil sinnvoll hier integrieren:



Weil am besten wäre es ja, das sobald der Upload funktioniert hat erst der Button zum Absenden aktiviert wird und es auch nicht möglich ist, mehrere Dateien hochzuladen sondern immer nur eine pro Absenden des Formulars.
 

koma05

Aktives Mitglied

AW: Ajax Upload mit JQuery

den upload-button kann man mittels
Code:
this.disable();
sperren und mit
Code:
this.enable();
wieder aktivieren.

hab mal den js-code ein wenig gestutzt:
Code:
        new AjaxUpload(button,{
            action: 'upload.php',
            data: {
                ms : '<? echo $_GET['ms']; ?>'              
              },
            name: 'userfile',
            onSubmit : function(file, ext){
                if (! (ext && /^(jpg)$/.test(ext))){
                        // extension is not allowed
                        alert('Error: nicht erlaubter Dateityp!');
                        // cancel upload
                        return false;
                }
           

                // If you want to allow uploading only 1 file at time,
                // you can disable upload button
                this.disable();


            },
            onComplete: function(file, response){

                if (response != "error") { //upload erfolgreich
   
...

                    this.enable(); // enable upload button                
                    
                }//response 
                else { // upload nicht erfolgreich
                    
                    ....

                }//else
            }
        });
Und wie meinst Du, könnte ich dieses Teil sinnvoll hier integrieren:
auf dieser seite sind 3 uploads. bin mir im mom nicht sicher ob dies mit mehreren upload-element auf einer seite funktioniert. ich teste mal...
 

koma05

Aktives Mitglied

AW: Ajax Upload mit JQuery

sooo...
hab nun mal eine testseite mit 3 uploads zum test gebastelt.
dabei habe ich mich an die 3 uploadformulare von orientiert.

  • beim ersten upload können grafikdateien (jpg, png, gif) hochgeladen werden. die datei darf max 300x200px groß sein.
  • beim zweiten upload können nur gif-grafiken hochgeladen werden. die datei darf max 50x50px groß sein.
  • beim dritten upload können nur zip oder rar-archive hochgeladen werden.
da meine domain noch nicht auf php 5.3 läuft, habe ich mal die relevanten dateien in ein archiv gepackt.

eine live-demo macht keinen sinn. grund: zum erkennen des mime-types wird folgende funktion verwendet:
PHP:
$finfo = finfo_open(FILEINFO_MIME_TYPE);
mit dieser funktion kann man wohl am zuverlässigsten den mime-typ ermitteln. diese funktion steht jedoch erst ab php5.3 standardmässig zur verfügung.
lokal unter xampp läuft es perfekt - auf dem server fehlt hingegen die funktion.

diese funktion kommt bei dem 3. upload zum einsatz. es wird geprüft ob es ein zip- oder rar-archiv ist. später kann man es - oder besser noch - man sollte wenn es auf dem server zum einsatz kommt, alle hochgeladenen dateien damit prüfen, nicht dass man eine manipulierte datei untergejubelt bekommt. aber jetzt zum test habe ich darauf verzichtet.

du kannst es ja mal anschauen... bei fragen helfe ich gerne weiter...
 
Zuletzt bearbeitet:

Stefan

Administrator

Teammitglied
AW: Ajax Upload mit JQuery

Hi koma05,

im Grunde schon sehr gut, nur hätte ich es gerne mit einer Prozessbar - Anzeige in % (), weil sonst bringt mir das nicht kaum Vorteile gegenüber der vorhandenen Version. Wäre genial, wenn Du das auch noch hinbekommst!
 

koma05

Aktives Mitglied

AW: Ajax Upload mit JQuery

Hi koma05,

im Grunde schon sehr gut, nur hätte ich es gerne mit einer Prozessbar - Anzeige in % (), weil sonst bringt mir das nicht kaum Vorteile gegenüber der vorhandenen Version. Wäre genial, wenn Du das auch noch hinbekommst!
die prozessbar haut auf der angegebenen seite nicht hin!
habe zum test ein ca 1.1mb großes bild hochgeladen. die prozessbar war innerhalb von ca 3 sek auf 100%.
da ich aber mit knapp 20kb/s uploade, kann das nicht stimmen!
 

koma05

Aktives Mitglied

AW: Ajax Upload mit JQuery

weiß nicht wie weit ihr an euerer neuen seite schon seit... weil auf der neuen seite von aboutpixel.de wird eine prima upload-technik eingesetzt.
die bildgröße wird gleich erkannt und auch ein genauer fortschrittsbalken mit zeitanzeige ist vorhanden
welche technik allerdings dahinter steckt kann ich nicht sagen
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Statistik des Forums

Themen
118.636
Beiträge
1.538.485
Mitglieder
67.559
Neuestes Mitglied
hanuta
Oben