Problema enviar conteúdo de arquivo no Internet Explorer
-
26-09-2019 - |
Pergunta
Estou enviando meu arquivo através do jQuery usando o plug -in jform.js e está trabalhando no firefox, mas quando eu o tento no arquivo ie8 corretamente, mas o controle de upload de arquivos fica oculto e mais quando eu comento, ou seja Quando eu verifico a solicitação.Files [0] .ContentLength no meu controlador, ele tem 0 valor. Este é o meu código e o que pode estar fazendo de errado? Estou usando asp.net MVC e JQuery-1.4.2
var myform = document.createElement("form");
myform.style.display = "none"
myform.action = "/Media/AjaxSubmit";
myform.enctype = "multipart/form-data";
myform.method = "post";
var imageLoad;
var imageLoadParent;
if (document.all) {//IE
imageLoad = document.getElementById(fileId);
imageLoadParent = document.getElementById(fileId).parentNode;
myform.appendChild(imageLoad);
document.body.appendChild(myform);
}
else {//FF
imageLoad = document.getElementById(fileId).cloneNode(true);
myform.appendChild(imageLoad);
document.body.appendChild(myform);
}
$(myform).ajaxSubmit({ success: function (responseText) {
});
Solução 2
Solução é simples, acabei de acrescentar que o controle de navegação quando responde da função AjaxSubmit e o código é o seguinte
$(myform).ajaxSubmit({ success: function (responseText) {
if (document.all) {//IE
imageLoadParent.appendChild(myform.firstChild);
}
else//FF
{
document.body.removeChild(myform);
}
Outras dicas
Qual é o delírio antes .ajaxSubmit
? Parece o código do final dos anos 90. Eu recomendaria que você simplesmente use o jQuery e não se preocupe com problemas de navegador cruzado:
$('form')
.attr('action', '/Media/AjaxSubmit')
.attr('method', 'post')
.attr('enctype', 'multipart/form-data')
.hide()
.append($('#' + fileId).clone())
.ajaxSubmit({
success: function(responseText) {
// ...
}
})
.appendTo('body');
Observação: A ação da forma codificada parece feia. Você deve considerar o uso de ajudantes HTML para gerar URLs.