Heim Web-Frontend js-Tutorial Ajax implementiert das Hochladen von Dateien mit Fortschrittsbalkeneffekt

Ajax implementiert das Hochladen von Dateien mit Fortschrittsbalkeneffekt

Apr 04, 2018 am 11:41 AM
ajax 上传 Zeitplan

Dieses Mal werde ich Ihnen die Ajax-Implementierung des Datei-Uploads mit Fortschrittsbalkeneffekt vorstellen. Was sind die Vorsichtsmaßnahmen für die Ajax-Implementierung des Datei-Uploads mit Fortschrittsbalkeneffekt? Ein praktischer Fall.

1. Übersicht

Im eigentlichen Webanwendungs- oder Website-Entwicklungsprozess ist es oft notwendig, die Datei-Upload-Funktion zu implementieren. Während des Datei-Upload-Vorgangs müssen Benutzer häufig lange warten. Um Benutzer rechtzeitig über den Upload-Fortschritt zu informieren, kann beim Hochladen der Datei der Fortschrittsbalken für den Datei-Upload angezeigt werden. Führen Sie dieses Beispiel wie in Abbildung 1 gezeigt aus, greifen Sie auf die Datei-Upload-Seite zu, klicken Sie auf die Schaltfläche „Durchsuchen“, um die hochzuladende Datei auszuwählen. Beachten Sie, dass die Datei 50 MB nicht überschreiten darf, da das System sonst eine Fehlermeldung ausgibt. Nachdem Sie die hochzuladende Datei ausgewählt haben, klicken Sie auf die Schaltfläche „Senden“. Die Datei wird hochgeladen und der Upload-Fortschritt wird angezeigt.

2. Technische Punkte

Verwenden Sie hauptsächlich die Open-Source-Common-FileUpload-Komponente, um den segmentierten Datei-Upload zu realisieren, um den Upload-Prozess zu realisieren , und erhalten Sie kontinuierlich den Upload-Fortschritt. Die Common-FileUpload-Komponente wird im Folgenden ausführlich vorgestellt.

Die Common-FileUpload-Komponente ist ein Unterprojekt des Jakarta-Commons-Projekts der Apache-Organisation. Diese Komponente kann problemlos verschiedene Formularfelder in Anfragen vom Typ Multipart/Formulardaten analysieren. Diese Komponente erfordert Unterstützung von einer anderen Komponente namens Common-IO. Diese beiden Komponentenpaketdateien können von der Website http://commons.apache.org heruntergeladen werden.

(1) Erstellen Sie ein Upload-Objekt

Beim Implementieren des Datei-Uploads mithilfe der Common-FileUpload-Komponente müssen Sie ein Factory-Objekt erstellen und darauf basierend ein neues erstellen Das Factory-Objekt Datei-Upload-Objekt, der spezifische Code lautet wie folgt:

DiskFileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
Nach dem Login kopieren

(2) Upload-Anfrage analysieren

Nachdem Sie ein Datei-Upload-Objekt erstellt haben, können Sie dies tun Verwenden Sie das Objekt, um den Upload zu analysieren. Die Anforderung zum Abrufen aller Formularelemente kann über die parseRequest()-Methode des Datei-Upload-Objekts erreicht werden. Die Syntaxstruktur der parseRequest()-Methode lautet wie folgt:

public List parseRequest(HttpServletRequest request) throws FileUploadException
Nach dem Login kopieren

(3) FileItem-Klasse

In der Common-FileUpload-Komponente, ob es sich um eine handelt B. ein Dateifeld oder ein normales Formularfeld, werden als FileItem-Objekte behandelt. Wenn die Methode isFormField() des Objekts „true“ zurückgibt, bedeutet dies, dass es sich um ein gewöhnliches Formularfeld handelt, andernfalls handelt es sich um ein Dateifeld. Beim Implementieren des Datei-Uploads können Sie den Dateinamen der hochgeladenen Datei über die Methode getName() der Klasse FileItem und die Größe der hochgeladenen Datei über die Methode getSize() abrufen.

3. Spezifische Implementierung

(1) Erstellen Sie die request.js-Datei und schreiben Sie die AjaxAnfragemethode.

(2) Erstellen Sie eine neue Datei-Upload-Seite index.jsp, fügen Sie ein Formular und Formularelemente zum Abrufen der hochgeladenen Dateiinformationen hinzu und fügen Sie eine

-Beschriftung und einen Anzeigeprozentsatz für die Anzeige des Fortschrittsbalkens hinzu. span>-Tag, der Schlüsselcode lautet wie folgt:

<form enctype="multipart/form-data" method="post" action="UpLoad?action=uploadFile">
Nach dem Login kopieren

Bitte wählen Sie die hochgeladene Datei aus:

Hinweis: Bitte kontrollieren Sie die Dateigröße innerhalb von 50 MB.

<p id="progressBar" class="prog_border" align="left">
<img src="images/progressBar.gif" width="0" height="13" id="imgProgress"></p>
<span id="progressPercent" style="width:40px;display:none">0%</span>
<input name="Submit" type="button" value="提交" onClick="deal(this.form)">
<input name="Reset" type="reset" class="btn_grey" value="重置"></td>
</form>
Nach dem Login kopieren

(3) Erstellen Sie eine neue Servlet-Implementierungsklasse UpLpad zum Hochladen von Dateien. Schreiben Sie die Methode uploadFile() in diese Klasse, um das Hochladen von Dateien zu implementieren. In dieser Methode wird die Common-FileUpload-Komponente verwendet, um Dateien in Abschnitten hochzuladen, den Upload-Prozentsatz zu berechnen und sie in Echtzeit in der Sitzung zu speichern wie folgt:

public void uploadFile(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=GBK");
request.setCharacterEncoding("GBK");
HttpSession session=request.getSession();
session.setAttribute("progressBar",0); //定义指定上传进度的Session变量
String error = "";
int maxSize=50*1024*1024; //单个上传文件大小的上限
DiskFileItemFactory factory = new DiskFileItemFactory(); //创建工厂对象
ServletFileUpload upload = new ServletFileUpload(factory); //创建一个新的文件上传对象
try {
List items = upload.parseRequest(request); // 解析上传请求
Iterator itr = items.iterator(); // 枚举方法
while (itr.hasNext()) {
FileItem item = (FileItem) itr.next(); //获取FileItem对象
if (!item.isFormField()) { // 判断是否为文件域
if (item.getName() != null && !item.getName().equals("")) {//是否选择了文件
long upFileSize=item.getSize(); //上传文件的大小
String fileName=item.getName(); //获取文件名
if(upFileSize>maxSize){
error="您上传的文件太大,请选择不超过50M的文件";
break;
}
// 此时文件暂存在服务器的内存中
File tempFile = new File(fileName); //构造文件目录临时对象
String uploadPath = this.getServletContext().getRealPath("/upload");
File file = new File(uploadPath,tempFile.getName()); 
InputStream is=item.getInputStream();
int buffer=1024; //定义缓冲区的大小
int length=0;
byte[] b=new byte[buffer];
double percent=0;
FileOutputStream fos=new FileOutputStream(file);
while((length=is.read(b))!=-1){
percent+=length/(double)upFileSize*100D; //计算上传文件的百分比
fos.write(b,0,length); //向文件输出流写读取的数据
session.setAttribute("progressBar",Math.round(percent)); 
}
fos.close();
Thread.sleep(1000); //线程休眠1秒
} else {
error="没有选择上传文件!";
}
}
}
} catch (Exception e) {
e.printStackTrace();
error = "上传文件出现错误:" + e.getMessage();
}
if (!"".equals(error)) {
request.setAttribute("error", error);
request.getRequestDispatcher("error.jsp").forward(request, response);
}else {
request.setAttribute("result", "文件上传成功!");
request.getRequestDispatcher("upFile_deal.jsp").forward(request, response);
}
}
Nach dem Login kopieren

(4) Importieren Sie in der Datei-Upload-Seite index.jsp die Datei request.js der geschriebenen Ajax-Anforderungsmethode und schreiben Sie die Ajax-Anforderungsmethode und die Ajax--Rückruffunktion um den Upload-Fortschritt zu erhalten:

<script language="javascript" src="js/request.js"></script>
<script language="javascript">
var request = false;
function getProgress(){ 
var url="showProgress.jsp"; //服务器地址
var param ="nocache="+new Date().getTime(); //每次请求URL参数都不同 ,避免上传时进度条不动
request=httpRequest("post",url,true,callbackFunc,param); //调用请求方法 
}
//Ajax回调函数
function callbackFunc(){
if( request.readyState==4 ){ //判断响应是否完成 
if( request.status == 200 ){ //判断响应是否成功
var h = request.responseText; //获得返回的响应数据,该数据位上传进度百分比
h=h.replace(/\s/g,""); //去除字符串中的Unicode空白符
document.getElementById("progressPercent").style.display=""; //显示百分比 
progressPercent.innerHTML=h+"%"; //显示完成的百分比
document.getElementById("progressBar").style.display="block"; //显示进度条
document.getElementById("imgProgress").width=h*(235/100); //显示完成的进度
}
}
}
</script>
Nach dem Login kopieren

(5) Schreiben Sie die Seite showProgress.jsp und wenden Sie den EL-Ausdruck auf dieser Seite an, um den Wert des Upload-Fortschritts auszugeben Der spezifische Code lautet wie folgt:

<%@page contentType="text/html" pageEncoding="GBK"%>
${progressBar}
Nach dem Login kopieren

(6) Schreiben Sie die JavaScript-Methode, die vom Onclick-Ereignis der Formularübermittlungsschaltfläche aufgerufen wird des Fensterobjekts wird verwendet, um den Server in regelmäßigen Abständen anzufordern, um den neuesten Upload-Fortschritt zu erhalten. Der Schlüssel lautet wie folgt:

function deal(form){
form.submit(); //提交表单
timer=window.setInterval("getProgress()",500); //每隔500毫秒获取一次上传进度
}
Nach dem Login kopieren

Ich glaube, Sie beherrschen die Methode Nachdem Sie den Fall in diesem Artikel gelesen haben, lesen Sie bitte andere verwandte Artikel auf der chinesischen PHP-Website.

Empfohlene Lektüre:

So verwenden Sie die Parameter der $.Ajax()-Methode

So fügen Sie XML-Dateien mit Ajax hinzu, löschen, ändern und überprüfen

Das obige ist der detaillierte Inhalt vonAjax implementiert das Hochladen von Dateien mit Fortschrittsbalkeneffekt. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Einfache Schritte zum Hochladen Ihrer eigenen Musik auf Kugou Einfache Schritte zum Hochladen Ihrer eigenen Musik auf Kugou Mar 25, 2024 pm 10:56 PM

1. Öffnen Sie Kugou Music und klicken Sie auf Ihr Profilbild. 2. Klicken Sie auf das Symbolset in der oberen rechten Ecke. 3. Klicken Sie auf [Musikwerke hochladen]. 4. Klicken Sie auf [Werke hochladen]. 5. Wählen Sie das Lied aus und klicken Sie auf [Weiter]. 6. Klicken Sie abschließend auf [Hochladen].

So laden Sie Songtexte auf QQ Music hoch So laden Sie Songtexte auf QQ Music hoch Feb 23, 2024 pm 11:45 PM

Mit dem Aufkommen des digitalen Zeitalters sind Musikplattformen zu einer der wichtigsten Möglichkeiten für Menschen geworden, an Musik zu gelangen. Wenn wir jedoch ein Lied hören, stellen wir manchmal fest, dass es keinen Text gibt, was sehr beunruhigend ist. Viele Menschen hoffen, dass beim Anhören von Liedern Liedtexte angezeigt werden können, um den Inhalt und die Emotionen der Lieder besser zu verstehen. QQ Music, eine der größten Musikplattformen in China, bietet Benutzern auch die Funktion zum Hochladen von Liedtexten, damit Benutzer die Musik besser genießen und die Konnotation des Liedes spüren können. Im Folgenden erfahren Sie, wie Sie Liedtexte auf QQ Music hochladen. Erste

So beheben Sie den 403-Fehler, der bei einer jQuery-AJAX-Anfrage auftritt So beheben Sie den 403-Fehler, der bei einer jQuery-AJAX-Anfrage auftritt Feb 20, 2024 am 10:07 AM

Titel: Methoden und Codebeispiele zur Behebung von 403-Fehlern in jQuery-AJAX-Anfragen. Der 403-Fehler bezieht sich auf eine Anfrage, dass der Server den Zugriff auf eine Ressource verbietet. Dieser Fehler tritt normalerweise auf, weil der Anfrage die Berechtigungen fehlen oder sie vom Server abgelehnt wird. Wenn Sie jQueryAJAX-Anfragen stellen, stoßen Sie manchmal auf diese Situation. In diesem Artikel wird erläutert, wie dieses Problem gelöst werden kann, und es werden Codebeispiele bereitgestellt. Lösung: Berechtigungen prüfen: Stellen Sie zunächst sicher, dass die angeforderte URL-Adresse korrekt ist und stellen Sie sicher, dass Sie über ausreichende Berechtigungen für den Zugriff auf die Ressource verfügen.

So beheben Sie den Fehler 403 der jQuery AJAX-Anfrage So beheben Sie den Fehler 403 der jQuery AJAX-Anfrage Feb 19, 2024 pm 05:55 PM

jQuery ist eine beliebte JavaScript-Bibliothek zur Vereinfachung der clientseitigen Entwicklung. AJAX ist eine Technologie, die asynchrone Anfragen sendet und mit dem Server interagiert, ohne die gesamte Webseite neu zu laden. Wenn Sie jedoch jQuery zum Senden von AJAX-Anfragen verwenden, treten manchmal 403-Fehler auf. Bei 403-Fehlern handelt es sich in der Regel um vom Server verweigerte Zugriffsfehler, möglicherweise aufgrund von Sicherheitsrichtlinien oder Berechtigungsproblemen. In diesem Artikel besprechen wir, wie Sie bei einer jQueryAJAX-Anfrage den Fehler 403 beheben können

PHP und Ajax: Erstellen einer Autovervollständigungs-Vorschlags-Engine PHP und Ajax: Erstellen einer Autovervollständigungs-Vorschlags-Engine Jun 02, 2024 pm 08:39 PM

Erstellen Sie eine Engine für Autovervollständigungsvorschläge mit PHP und Ajax: Serverseitiges Skript: Verarbeitet Ajax-Anfragen und gibt Vorschläge zurück (autocomplete.php). Client-Skript: Ajax-Anfrage senden und Vorschläge anzeigen (autocomplete.js). Praktischer Fall: Fügen Sie ein Skript in die HTML-Seite ein und geben Sie die Kennung des Sucheingabeelements an.

So verbessern Sie die Upload-Geschwindigkeit Ihres Computers So verbessern Sie die Upload-Geschwindigkeit Ihres Computers Jan 15, 2024 pm 06:51 PM

Die Upload-Geschwindigkeit wird sehr langsam? Ich glaube, dass dies ein Problem ist, auf das viele Freunde beim Hochladen von Dateien auf ihren Computer stoßen. Wenn das Netzwerk beim Übertragen von Dateien über einen Computer instabil ist, ist die Upload-Geschwindigkeit sehr langsam. Im Folgenden erklärt Ihnen der Herausgeber, wie Sie das Problem der langsamen Upload-Geschwindigkeit des Computers lösen können. Wenn es um die Netzwerkgeschwindigkeit geht, wissen wir alle, dass die Geschwindigkeit beim Öffnen von Webseiten, die Download-Geschwindigkeit und die Upload-Geschwindigkeit ebenfalls sehr wichtig sind. Insbesondere einige Benutzer müssen häufig Dateien auf die Netzwerkfestplatte hochladen, sodass eine schnelle Upload-Geschwindigkeit zweifellos zu Einsparungen führt Sie sparen viel Geld. Was soll ich tun, wenn die Upload-Geschwindigkeit langsam ist? Nachfolgend stellt Ihnen der Editor Bilder und Texte zum Umgang mit langsamen Upload-Geschwindigkeiten auf dem Computer vor. Wie kann das Problem der langsamen Upload-Geschwindigkeit des Computers gelöst werden? Klicken Sie auf „Start – Ausführen“ oder „Fenstertaste“.

Wie kann das Problem des jQuery AJAX-Fehlers 403 gelöst werden? Wie kann das Problem des jQuery AJAX-Fehlers 403 gelöst werden? Feb 23, 2024 pm 04:27 PM

Wie kann das Problem des jQueryAJAX-Fehlers 403 gelöst werden? Bei der Entwicklung von Webanwendungen wird jQuery häufig zum Senden asynchroner Anfragen verwendet. Allerdings kann bei der Verwendung von jQueryAJAX manchmal der Fehlercode 403 auftreten, der darauf hinweist, dass der Zugriff vom Server verboten ist. Dies wird normalerweise durch serverseitige Sicherheitseinstellungen verursacht, es gibt jedoch Möglichkeiten, das Problem zu beheben. In diesem Artikel wird erläutert, wie Sie das Problem des jQueryAJAX-Fehlers 403 lösen können, und es werden spezifische Codebeispiele bereitgestellt. 1. machen

So machen Sie Fotos und laden sie auf den Computer hoch So machen Sie Fotos und laden sie auf den Computer hoch Jan 16, 2024 am 10:45 AM

Solange der Computer mit einer Kamera ausgestattet ist, kann er Bilder aufnehmen, einige Benutzer wissen jedoch immer noch nicht, wie man Bilder aufnimmt und hochlädt. Jetzt gebe ich Ihnen eine detaillierte Einführung in die Methode zum Aufnehmen von Bildern auf dem Computer. sodass Benutzer die Bilder hochladen können, wo immer sie möchten. So nehmen Sie Fotos auf und laden sie auf einen Computer hoch 1. Mac-Computer 1. Öffnen Sie den Finder und klicken Sie auf die Anwendung links. 2. Klicken Sie nach dem Öffnen auf die Kameraanwendung. 3. Klicken Sie einfach unten auf die Fotoschaltfläche. 2. Windows-Computer 1. Öffnen Sie das Suchfeld unten und geben Sie „Kamera“ ein. 2. Öffnen Sie dann die gesuchte Anwendung. 3. Klicken Sie auf die Fotoschaltfläche daneben.

See all articles