Javascript JQuery Ajax上载文件-选择器在Mozilla中不起作用
我已经创建了一个ajax上传文件,我有一些简单的问题,我有回调,允许您检查文件大小、文件格式、进度,以及上传完成和开始的时间。现在问题在于文件何时完成。当上传开始时,Ajax gif图像加载器显示为$(xxx).show(),然后显而易见的是,当上传结束时,我希望Ajax gif图像加载器隐藏$(xxx).hide(),但在Mozilla中,选择器没有隐藏Ajax gif图像加载器,而是在IE中工作,非常奇怪。下面的代码是使用.NET模块处理上传请求的jQueryAjax上传的完整源代码 模块Javascript JQuery Ajax上载文件-选择器在Mozilla中不起作用,javascript,jquery,asp.net,.net,Javascript,Jquery,Asp.net,.net,我已经创建了一个ajax上传文件,我有一些简单的问题,我有回调,允许您检查文件大小、文件格式、进度,以及上传完成和开始的时间。现在问题在于文件何时完成。当上传开始时,Ajax gif图像加载器显示为$(xxx).show(),然后显而易见的是,当上传结束时,我希望Ajax gif图像加载器隐藏$(xxx).hide(),但在Mozilla中,选择器没有隐藏Ajax gif图像加载器,而是在IE中工作,非常奇怪。下面的代码是使用.NET模块处理上传请求的jQueryAjax上传的完整源代码 模块
我认为这可能与更改表单操作有关。我试图将表单操作属性更改回其原始设置,但Mozilla似乎不想在文件下载完成后更改表单操作属性。
Imports System.Web.UI.WebControls
Imports System.Web.UI
Imports System.Web
Imports System.Web.UI.HtmlControls
Imports API.HTML.Controls
Imports System.IO
Public Class JQueryFileUploadModule
Implements IHttpModule
Public Sub Dispose() Implements System.Web.IHttpModule.Dispose
End Sub
Public Sub Init(ByVal context As System.Web.HttpApplication) Implements System.Web.IHttpModule.Init
AddHandler context.BeginRequest, AddressOf OnBeginRequest
End Sub
Public Sub OnBeginRequest(ByVal sender As Object, ByVal e As EventArgs)
Dim httpApplication As HttpApplication = CType(sender, HttpApplication)
Dim contextPage As HttpContext = CType(sender, HttpApplication).Context
If contextPage.Request.QueryString("request") IsNot Nothing Then
If contextPage.Request.QueryString("request") = "getfilesize" Then
Dim fileNameQuesryString As String = contextPage.Request.QueryString("file")
Dim count As Integer = 0
If contextPage.Request.Files.Count > 0 AndAlso contextPage.Request.Files(0).FileName <> "" Then
Dim httpPostedFile As HttpPostedFile = contextPage.Request.Files(0)
Dim contentLength As String = httpPostedFile.ContentLength.ToString
contentLength = CInt(contentLength) / 1024
Dim javascript As String = String.Empty
javascript += "$(document).ready(function() {" & Environment.NewLine
javascript += String.Format(" window.parent.$.fn.fileUpload.GetFileSize('{0}');", contentLength) & Environment.NewLine
javascript += "});" & Environment.NewLine
contextPage.Response.Clear()
contextPage.Response.Write(String.Format("<html><head><script type='text/javascript' src='http://code.jquery.com/jquery-1.7.1.min.js'></script><script type='text/javascript'>{0}</script></head><body></body></html>", javascript, contentLength))
contextPage.Response.End()
End If
ElseIf contextPage.Request.QueryString("request") = "savefile" Then
Dim fileNameQuesryString As String = contextPage.Request.QueryString("file")
Dim savePath As String = contextPage.Request.QueryString("savePath")
Dim httpPostedFile As HttpPostedFile = contextPage.Request.Files(0)
Dim contentLength As String = httpPostedFile.ContentLength.ToString
Dim folderPath As String = System.Web.HttpContext.Current.Server.MapPath(savePath & "/")
Dim directory As New DirectoryInfo(folderPath)
If Not directory.Exists Then
directory.Create()
End If
Dim remotePath As New FileInfo(folderPath & "/" & fileNameQuesryString)
Dim os As New System.IO.FileStream(remotePath.FullName, IO.FileMode.Create)
Dim inputStream As System.IO.Stream = HttpPostedFile.InputStream
Dim length = HttpPostedFile.ContentLength
Dim b(1) As Byte
Dim bb As Byte
While length > 0 AndAlso inputStream.Read(b, 0, b.Length) > -1
os.Write(b, 0, b.Length)
length -= b.Length
End While
os.Close()
os.Dispose()
ElseIf contextPage.Request.QueryString("request") = "fileprogress" Then
Dim fileNameQuesryString As String = contextPage.Request.QueryString("file")
Dim savePath As String = contextPage.Request.QueryString("savePath")
Dim remotePath As New FileInfo(System.Web.HttpContext.Current.Server.MapPath(savePath & "/" & fileNameQuesryString))
Dim fileSizeDone As Integer = 0
If remotePath.Exists Then
fileSizeDone = remotePath.Length
Else
End If
Dim javascript As String = String.Empty
javascript += "$(document).ready(function() {" & Environment.NewLine
javascript += String.Format(" window.parent.$.fn.fileUpload.SavingFile({0});", fileSizeDone / 1024) & Environment.NewLine
javascript += "});" & Environment.NewLine
contextPage.Response.Clear()
contextPage.Response.Write(String.Format("<html><head><script type='text/javascript' src='http://code.jquery.com/jquery-1.7.1.min.js'></script><script type='text/javascript'>{0}</script></head><body></body></html>", javascript))
contextPage.Response.End()
End If
End If
End Sub
End Class
(function($) {
$.fn.fileUpload = function(settings) {
var def = {
fileSizeLimit: 2048,
fileExtAllowed: '',
iframe: null,
fileFormatCheck: function() { },
fileSizeError: function() { },
fileProgress: function() { },
finish: function() { },
start: function() { },
savePath: '/'
}
var container = this;
var fileInputName = '';
var fileInputExt = '';
var fileLength = 0;
var formAction = $("form").attr("action");
settings = $.extend(def, settings);
iframe = $("<iframe id='fileupload' name='fileupload'/>");
$(iframe).css("display", "none");
$(iframe).insertAfter(this);
iframe2 = $("<iframe id='fileupload2' name='fileupload2'/>");
$(iframe2).css("display", "none");
$(iframe2).insertAfter(this);
var SubmitFormForFielSizeRequest = function(text) {
$("form").attr("enctype", "multipart/form-data");
$("form").attr("target", 'fileupload');
if (GetWindowURL().indexOf("?") != -1) {
$("form").attr("action", GetWindowURL() + '&request=getfilesize&file=' + text)
}
else {
$("form").attr("action", GetWindowURL() + '?request=getfilesize&file=' + text)
}
$("form").submit();
};
var SubmitFormForFileSaveProcess = function(text) {
$("form").attr("enctype", "multipart/form-data");
$("form").attr("target", 'fileupload');
if (GetWindowURL().indexOf("?") != -1) {
$("form").attr("action", GetWindowURL() + '&request=savefile&file=' + text + '&savepath=' + settings.savePath)
}
else {
$("form").attr("action", GetWindowURL() + '?request=savefile&file=' + text + '&savepath=' + settings.savePath)
}
$("form").submit();
};
var SubmitFormForFileProgressCheck = function(text) {
$("form").attr("enctype", "multipart/form-data");
$("form").attr("target", 'fileupload2');
if (GetWindowURL().indexOf("?") != -1) {
$("form").attr("action", GetWindowURL() + '&request=fileprogress&file=' + text + '&savepath=' + settings.savePath)
}
else {
$("form").attr("action", GetWindowURL() + '?request=fileprogress&file=' + text + '&savepath=' + settings.savePath)
}
$("form").submit();
};
var GetWindowURL = function() {
return window.location.href;
};
var GetFileName = function() {
var text = $(container).attr("value");
var fileName = '';
var splitText = text.split("\\");
if (splitText.length > 1) {
fileName = splitText[splitText.length - 1];
}
else {
fileName = text;
}
return fileName;
};
var GetFileExt = function() {
var fileExtSplit = GetFileName().split(".");
var fileExt = fileExtSplit[fileExtSplit.length - 1];
return fileExt;
};
$(this).change(function() {
if (settings.fileExtAllowed != GetFileExt()) {
settings.fileFormatCheck.call(this, GetFileExt());
}
else {
SubmitFormForFielSizeRequest(GetFileName());
}
});
$.fn.fileUpload.GetFileSize = function(size) {
if (size > settings.fileSizeLimit) {
$("form").attr("action", formAction);
settings.fileSizeError.call(this, size);
}
else {
fileLength = size;
SubmitFormForFileSaveProcess(GetFileName());
settings.start.call(this, GetFileName());
setTimeout(function() { $.fn.fileUpload.SavingFile(0); }, 2000);
}
}
$.fn.fileUpload.SavingFile = function(progress) {
var len = parseInt(fileLength).toFixed(0);
var prog = parseInt(progress).toFixed(0);
if (len <= prog) {
$("form").attr("enctype", "");
$("form").attr("action", formAction);
settings.finish.call(this, GetFileName());
}
else {
SubmitFormForFileProgressCheck(GetFileName());
this.SavingProgress(progress);
}
}
$.fn.fileUpload.SavingProgress = function(progress) {
settings.fileProgress.call(this, fileLength, progress);
}
}
})(jQuery);
$("#htmlinputfilecreateroom").fileUpload({ fileExtAllowed: 'jpg', fileSizeLimit: 2048, savePath: 'docs',
fileFormatCheck: function(format) {
if (format != 'jpg') {
}
},
fileSizeError: function(size) {
},
fileProgress: function(length, progress) {
},
start: function(fileName) {
$(".imageselectedcreaterromloader").show();
},
finish: function(fileName) {
$(".imageselectedcreaterromloader").hide(); //Doesnt hide here but works in ie
$(".imageselectedcreaterrom").css("backgroundImage", "url('docs/" + fileName + "')");//Image doesnt display but works in ie
}
});