2012-12-01 4 views
6
@using (Html.BeginForm("Upload", "MyProfile", FormMethod.Post, new 
{ 
    @encType = "multipart/form-data", 
    id = "ImgForm", 
    name = "ImgForm", 
    target = "UploadTarget" 
})) 
{ 
    <input type="file" name="FileUpload" class="filestyle-notext fileupload">     
} 

<iframe id="UploadTarget" name="UploadTarget" style="position: absolute; left: -999em; top: -999em;"></iframe> 

Und durch javascript/jquery, mache ich Formular überreichen bei Änderung der Dateieingabe.Zugriff verweigert Fehler in IE beim Einreichen von Formular über Javascript

$('.myprofile .fileupload').change(function() {  
    $('#ImgForm').submit(); 
}); 

Es wirft einen Fehler: Zugriff verweigert, und es geschieht nur in IE (i ie8 verwende) und arbeitet in Firefox, Chrome gut.

Nach dem Lesen in Foren sehe ich, gibt es ein Problem mit Formular über Javasript in IE aus Sicherheitsgründen einzureichen, aber gibt es eine Workaround? Und ich verstehe nicht, warum zur Hölle nur IE das tut, wenn alle Browser es unterstützen. Ist IE sicherer als alle Browser? ;) Pool in deinen Vorschlägen bitte.

+0

Mein erster Gedanke wäre, den geschützten Modus zu deaktivieren. – mrtsherman

+3

* Ist IE sicherer als alle Browser? * Lol ... frech. – McGarnagle

Antwort

9

IE8 unterstützt nicht das Aufrufen des .submit() Ereignisses eines Formulars mit Dateieingaben aus dem .change() Ereignis dieser Dateieingabe. Dies ist aus Sicherheitsgründen. Sie versuchen, eine Datei an den Server zu senden, ohne dass der Benutzer dies explizit zulässt. Eine mögliche Abhilfe ist die .submit() auf dem Formular rufen aus einem .click() Ereignisse irgendeiner Taste, die Sie gesetzt haben:

$('.uploadButton').click(function() {  
    $('#ImgForm').submit(); 
}); 

Jetzt, wenn der Benutzer klickt auf einig Upload-Button wird das Formular aus.

Es ist erwähnenswert, dass dies nur mit IE8 problematisch ist. Höhere Versionen und andere Browser haben diese Einschränkung nicht.

Sie können auch ein Flash-basiertes Upload-Steuerelement wie Uploadify oder BlueImp File upload verwenden, um Dateien über Cross-Browser auf den Server zu übertragen.

+0

Es ist erwähnenswert, dass dies immer noch ein Problem in IE10 ist und der Versuch, es auszutricksen, funktioniert nicht. Sie können das Klickereignis nicht über Code aufrufen. –

Verwandte Themen