Tôi hiện đang làm việc trên một tập tin tải lên tập tin AJAX, mà hoạt động như một nét duyên dáng trong Firefox nhưng không hoạt động trong IE.Hỗ trợ crossload Ajax jQuery AJAX Fileupload
đây là HTML cơ bản tôi đang sử dụng:
<form >
<input type="file" name="FileFields" id="FileFields"/>
<button type="button" onclick="uploadFile();" id="uploadButton">Upload</button>
<ul id="files"/>
... other form elements ...
</form>
<div id="fileUploadDiv"/>
này là chức năng UploadFile:
function uploadFile()
{
//we don't want more then 5 files uploaded
if($('#files li').size() >= 5)
{
return;
}
//disable the upload button
$('#uploadButton').attr('disabled','disabled');
//show loading animation
$('#files').append(
$('<li>')
.attr('id','loading')
.append(
$('<img>').attr('src','/images/loading.gif')
)
.addClass('loading')
);
//add all neccessary elements (the form and the iframe)
$('#fileUploadDiv').append(
$('<form action="/uploadFile" method="post" id="fileUploadForm">')
.attr('enctype','multipart/form-data')
.attr('encoding', 'multipart/form-data')
.attr('target', 'upload_frame')
.append(
$('#FileFields').clone()
.css('visibility','hidden')
)
.append(
$('<iframe>').attr('name','upload_frame')
.load(function(){finishedPostingFile();})
.attr('id','upload_frame')
.attr('src','')
.css({
'width':'0px',
'height':'0px',
'border':'0px none #fff'
})
)
);
//start uploading the file
$('#fileUploadForm').submit();
}
và finishedPostingFile() sẽ được gọi trở lại chức năng khi iframe đã hoàn tất gửi bài /tải.
Bây giờ, tính năng này hoạt động như một nét duyên dáng trong Firefox nhưng không hoạt động trong IE. Tôi đã tìm ra rằng IE cần attr('encoding',...)
thay vì attr('enctype',...)
và tôi cũng đã thử nó mà không cần tạo biểu mẫu và khung nội tuyến khi đang di chuyển bằng cách viết các phần tử đó dưới dạng html thuần túy, điều này thực sự không tạo ra sự khác biệt.
IE (IE8, được bê tông, chưa thử nghiệm trong < 8) không đưa ra lỗi và hoạt ảnh tải chỉ tiếp tục quay mà không có tệp nào được tải lên ... Bất kỳ ai cũng có ý tưởng về cách thực hiện công việc này?
Bạn đã bao giờ nhận được câu trả lời hay về điều này chưa? – camainc