2012-04-13 6 views
1

abzubrechen Ich habe aa Form, die eine Datei-Eingabe enthält, Button Button laden und Abbrechen:Wie diese Datei-Upload unter

<form action='imageupload.php' method='post' enctype='multipart/form-data' target='upload_target' onsubmit='stopImageUpload(this);' class='imageuploadform' > 
<p class='imagef1_upload_form' align='center'><label>Image File: <input name='fileImage' type='file' class='fileImage' /></label> 
<input type='submit' name='submitImageBtn' class='sbtnimage' value='Upload' /></label> 
</p> 
<p class='imagef1_cancel' align='center'> 
<label><input type='button' name='imageCancel' class='imageCancel' value='Cancel' /></label> 
</p> 
<iframe class='upload_target' name='upload_target' src='#' style='width:0;height:0;border:0px;solid;#fff;'></iframe> 
</form> 

ich gesetzt habe die PHP-up, um die Datei zu laden und alle und die Upload Werke perfekt. Das Hochladen startet und stoppt wegen der JavaScript - Funktionen unten, aber meine Frage ist, wie kann es codiert werden, wenn der Benutzer das Hochladen startet (startImageUpload() - Funktion), wenn der Benutzer den Upload während des Hochladens abbrechen möchte, indem er auf klickt Abbrechen, dann stoppt das Hochladen (ich glaube, es muss zur stopImageUpload() - Funktion navigieren, aber ich bin mir nicht sicher, ob das korrekt ist oder nicht).

Ich habe alles eingerichtet, um auf dem Bildschirm richtig angezeigt zu werden, ich muss nur wissen, welche die richtige Funktion ist, um einen Upload erfolgreich abbrechen zu können, sowie die Meldung "Es gibt einen Fehler beim Hochladen" anzuzeigen bereits in der Funktion stopImageUpload().

Unten ist die Funktion, wo der Upload beginnt:

function startImageUpload(imageuploadform){ 

    $(imageuploadform).find('.imagef1_upload_process').css('visibility','visible'); 
    $(imageuploadform).find('.imagef1_cancel').css('visibility','visible'); 
    $(imageuploadform).find('.imagef1_upload_form').css('visibility','hidden'); 
    sourceImageForm = imageuploadform; 
     return true; 
} 

Unten ist die Funktion, wo die Upload beendet:

function stopImageUpload(success){ 
     var result = ''; 
     if (success == 1){ 
     result = '<span class="msg">The file was uploaded successfully!</span><br/><br/>'; 
     } 
     else { 
     result = '<span class="emsg">There was an error during file upload!</span><br/><br/>'; 
     } 
     $(sourceImageForm).find('.imagef1_upload_process').css('visibility','hidden'); 
     $(sourceImageForm).find('.imagef1_cancel').css('visibility','hidden'); 

     return true; 
} 
+3

Wenn Ihr Upload nicht ajaxed ist, gibt es keine Möglichkeit, den Browser zu stoppen, der die Anfrage ausführt, nur der Benutzer kann das tun. – GillesC

+0

Veröffentlichen Sie eine Nachricht auf dem Server und teilen Sie ihr mit, dass sie den Upload stoppen soll. –

+0

Woher kommt Ihre Anfrage? – Halcyon

Antwort

3

OK, so dass Sie bereits die Funktion und die Click-Handler haben, so Was hält Sie davon ab, Ihre Funktion in Ihrem Event-Handler aufzurufen?

Unter der Annahme, dass die stopImageUpload Funktion innerhalb der gleichen Datei ist (oder zumindest auf dieser Seite geladen):

$(".imagecancel").on("click", function(event) { 
    console.log("clicked"); 
    event.preventDefault(); 
    stopImageUpload(); // Just call it?! 
}); 

Stellen Sie außerdem sicher, dass den Browser Stopp hat es aktuelle Anforderung (Upload) in Ihrem stopImageUpload Senden Funktion:

if(navigator.appName == "Microsoft Internet Explorer") { 
    window.document.execCommand('Stop'); 
} else { 
    window.stop(); 
} 
+0

Hallo, ich arbeite mit einem Partner zusammen, der diesen Code in eine Anwendung einfügt und die App designt. Kann der navigator.appName für Apps wie Flex, Flash Builder oder Cold Fusion verwendet werden (ich weiß nicht, auf welcher Software die Anwendung läuft)? – user1324106

+0

Das ist einfach Javascript, es hat nichts mit einer dieser Sprachen zu tun, es interagiert direkt mit dem Browser. – Oldskool