Heim > php教程 > PHP开发 > Hauptteil

Jquery und BigFileUpload implementieren das Hochladen großer Dateien und die Anzeige eines Fortschrittsbalkens

高洛峰
Freigeben: 2016-12-29 16:53:05
Original
1703 Leute haben es durchsucht

Implementierungsmethode: Verwenden Sie die Bigfileupload-Komponente von Gaoshanlaike, um ein modales Fenster zu öffnen, und aktualisieren Sie es dann weiter, um den Fortschritt zu erhalten. Deshalb habe ich darüber nachgedacht, JQuery zu verwenden Fortschrittsanzeige ohne Aktualisierung. Da die Seite nach dem Absenden nicht aktualisiert werden darf, müssen die von progress.aspx zurückgegebenen Fortschrittsinformationen kontinuierlich über Ajax abgerufen werden, sodass die Ajaxform-Übermittlung von jquery.form verwendet wird. Wenn nach der Übermittlung des Ajaxform-Formulars Ereignisse nach der Übermittlung ausgeführt werden, z. B. das Einfügen von Datensätzen in die Datenbank, wird es weiterhin debuggt.

1. Verwenden Sie die Fortschrittsleiste, das Formular, MultFile und die zugehörigen Komponenten

<script src="../../common/js/jquery-1.2.6.pack.js" type="text/javascript"></script> 
<script src="../../common/jqControl/packed/ui.core.packed.js" type="text/javascript"></script> 
<!--FORM--> 
<script src="../../common/jqControl/ajax/jquery.form.js" type="text/javascript"></script> 
<!--上传文件--> 
<script src="../../common/jqControl/upLoad/jquery.MultiFile.pack.js" type="text/javascript"></script> 
<!--进度条--> 
<script src="../../common/jqControl/packed/ui.progressbar.packed.js" type="text/javascript"></script> 
<!--对话框--> 
<!--我的JS --> 
<link href="../../common/Css/jquery-ui-themeroller.css" rel="stylesheet" type="text/css" /> 
<script src="../gadget/JS/uploadfile.js" type="text/javascript">
Nach dem Login kopieren

Jquery und BigFileUpload implementieren das Hochladen großer Dateien und die Anzeige eines Fortschrittsbalkens

2. Der uploadfile.js-Code lautet wie folgt:

$(function() 
{ 
var info = &#39;<div style="display:none" id="uploadinfo">&#39;; 
info += &#39;<p>正在上传: <span id="uploadfilename"></span></p>&#39;; 
info += &#39;<p>上传速度: <span id="uploadrate"></span> </p>&#39;; 
info += &#39;<p>状态: <span id="uploadtitle"></span></p>&#39;; 
info += &#39;<p>预计剩余时间: <span id="uploadlefttime"></span></p>&#39;; 
info += &#39;<p>上传文件大小: <span id="uploadtotal"></span></p>&#39;; 
info += &#39;<p>已上传大小: <span id="uploadcurrent"></span></p>&#39;; 
info += &#39;<p><div id="uploadprogressbar"></div></p>&#39;; 
info += &#39;</div><div id="dialogsucc" > &#39;; 
$("body").append(info); 
//进度条 
$("#uploadprogressbar").progressbar(); 
//上传 
$(&#39;#fileupload&#39;).MultiFile(); 
$(&#39;#btshow&#39;).click(function() 
{ 
alert($("body").html()); 
}); 
//提交 
$(&#39;#btnsubmit&#39;).click(function() 
{ 
$("#uploadForm").ajaxSubmit( 
{ 
dataType: &#39;text&#39;, 
beforeSubmit: function(a,f,o) 
{ 
startProgress(); 
}, 
async:false, 
success: function(data) 
{ 
//$("#dialogsucc").text(data); 
//stopProgress(); 
if(data.succ==1) 
{ 
/* $("#dialogsucc").show(); 
$("#dialogsucc").dialog( 
{ 
modal: true, 
overlay: 
{ 
opacity: 0.5, 
background: "black" 
} 
}); */
} 
}, 
error:function(err) 
{ 
alert(err); 
} 
}); 
}); 
}); 
function getProgress(){ 
$.ajax({ 
type: "post", 
dataType:"json", 
url: "uploadProgress.aspx", 
data: "UploadID=" + $("#UploadID").val(), 
success: function(data){ 
$("#uploadprogressbar").progressbar("progress", data.percent); 
$("#uploadfilename").html(data.filename); 
$("#uploadrate").html(data.rate); 
$("#uploadtitle").html(data.info); 
$("#uploadlefttime").html(data.lefttime); 
$("#uploadtotal").html(data.total); 
$("#uploadcurrent").html(data.current); 
if(data.succ==-1){ 
alert(data.errmsg); 
} 
if (data.succ==0){ 
setTimeout("getProgress()", 1000); 
} 
if (data.succ==1){ 
return; 
} 
}, 
error:function(msg) 
{ 
alert(msg); 
} 
}); 
} 
function startProgress(){ 
$("#uploadinfo").show(); 
setTimeout("getProgress()", 500); 
} 
function stopProgress() 
{ 
$("#uploadinfo").hide(); 
}
Nach dem Login kopieren

3: Der progress.aspx-Code lautet wie folgt:

protected void Page_Load(object sender, EventArgs e) 
{ 
try
{ 
string s = "{"; 
UploadContext upload = UploadContextFactory.GetUploadContext(Request["UploadID"]); 
//初始化 
if (upload.Status == uploadStatus.Initializing) 
{ 
s += responeJSON(upload, "0", ""); 
} 
if (upload.Status == uploadStatus.Uploading) 
{ 
s += responeJSON(upload, "0", ""); 
} 
if (upload.Status == uploadStatus.Complete) 
{ 
s += responeJSON(upload, "1", ""); 
} 
if (upload.Status == uploadStatus.HasError) 
{ 
s += responeJSON(upload, "-1", ""); 
} 
s += "}"; 
Response.Write(s); 
} 
catch (Exception err) 
{ 
//throw err; 
Response.Write("{&#39;info&#39;:&#39;" + err.Message.Replace("&#39;", "") + "&#39;,&#39;succ&#39;:-1}"); 
} 
} 
private string responeJSON(UploadContext upload, string succ,string errmsg) 
{ 
string s = ""; 
s += "&#39;info&#39;:&#39;" + upload.FormatStatus + "&#39;" ; 
s += ",&#39;percent&#39;:&#39;" + Convert.ToInt32((upload.Readedlength * 100.0 / upload.TotalLength)).ToString() + "&#39;"; 
s += ",&#39;current&#39;:&#39;" + (upload.Readedlength/1024).ToString() + "KB&#39;"; 
s += ",&#39;total&#39;:&#39;" + (upload.TotalLength/1024).ToString() + "KB&#39;"; 
s += ",&#39;rate&#39;:&#39;" + upload.FormatRatio + "&#39;"; 
s += ",&#39;filename&#39;:&#39;" + upload.CurrentFile + "&#39;"; 
s += ",&#39;cancel_upload&#39;:" + 0 ; 
s += ",&#39;lefttime&#39;:&#39;" + upload.LeftTime + "&#39;"; 
s += ",&#39;succ&#39;:" + succ; 
s += ",&#39;errmsg&#39;:&#39;" + errmsg +"&#39;"; 
return s; 
}
Nach dem Login kopieren

4. Nachdem die ajaxForm ausgeführt wurde, kann sie nach dem Hochladen der Datei normal ausgeführt werden. Ich werde es nach der Recherche posten

Das Obige ist die vom Herausgeber eingeführte Jquery und BigFileUpload, um das Hochladen großer Dateien und die Anzeige des Fortschrittsbalkens zu implementieren. Wenn Sie Fragen haben, gehen Sie bitte Senden Sie mir eine Nachricht und der Herausgeber wird Ihnen rechtzeitig antworten. Ich möchte mich auch bei Ihnen allen für Ihre Unterstützung der chinesischen PHP-Website bedanken!

Weitere verwandte Artikel über Jquery und BigFileUpload, die das Hochladen großer Dateien und die Anzeige von Fortschrittsbalken implementieren, finden Sie auf der chinesischen PHP-Website!


Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Empfehlungen
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!