Heim > Web-Frontend > js-Tutorial > Hauptteil

Upload-Datei hochladen method_javascript-Kenntnisse

WBOY
Freigeben: 2016-05-16 15:10:32
Original
1558 Leute haben es durchsucht

Uploadify ist ein Upload-Plugin für JQuery. Es erzielt sehr gute Ergebnisse und zeigt den Fortschritt an. Das offiziell bereitgestellte Beispiel ist jedoch die PHP-Version. In diesem Artikel wird die Verwendung von Uploadify in Aspnet ausführlich vorgestellt. Sie können auch auf den Link unten klicken, um ihn zu demonstrieren oder herunterzuladen.

Lassen Sie mich Ihnen zuerst die Renderings zeigen:

Änderung:

Es wurde gemeldet, dass die Datei „uploadify-cancel.png“ nicht gefunden werden konnte. Suchen Sie uploadify.css, suchen Sie .uploadify-queue-item .cancel a { und ändern Sie den Dateipfad.
Viele Leute sagen, dass bei Verwendung von uploadify unter Chrome und Firefox die Sitzung nicht abgerufen werden kann, was zu Upload-Fehlern führt. Sie müssen die Sitzungs-ID-Methode manuell zu den Parametern hinzufügen. Aber das habe ich hier nicht gemacht, und das Hochladen in Chrome und Firefox war kein Problem. Ich weiß nicht warum, vielleicht liegt es daran, dass ich die neueste Version verwende.

Wichtige Punkte:

Die js-Konfiguration von uploadify ist relativ umfangreich und einige Methoden und Attribute können während der tatsächlichen Verwendung entsprechend gelöscht werden.

Unter normalen Umständen können nur onSelect, onUploadError und onUploadSuccess für das Hochladen einer einzelnen Datei berücksichtigt werden.

Wenn es sich um einen Upload mehrerer Dateien handelt, fügen Sie zusätzlich zum Upload einer einzelnen Datei onQueueComplete hinzu, um die gesamte Warteschlange zu überwachen.

Starten Sie das Hochladen aller Dateien: $('#file_upload').uploadify('upload', '*');

Upload abbrechen: $('#file_upload').uploadify('cancel', parm);

parm ist leer: Hochladen der ersten Datei abbrechen.

parm ist '*': Alle hochgeladenen Dateien abbrechen.

parm ist Datei-ID: Brechen Sie die Datei ab, die der Datei-ID entspricht.

Ändern Sie einige zusätzliche Variablen: $('#file_upload').uploadify("settings", "formData",{"name1": "Chinesischer Name", "parm1": "Geänderte Parameter"}); json. Wenn eine Variable im JSON bereits vorhanden ist, überschreiben Sie das Attribut. Wenn nicht, hängen Sie das Attribut an.
Die serverseitige Einstellungskodierung lautet: upload.setHeaderEncoding("UTF-8");, sodass der analysierte Dateiname normales Chinesisch ist. Allerdings sind die analysierten zusätzlichen Variablen auf Chinesisch verstümmelt, daher führen wir hier eine Transkodierung durch (ich habe immer das Gefühl, dass die Transkodierung relativ gering ist, und ich weiß nicht, wo die Konfiguration falsch ist). neuer String(item.getString().getBytes("iso8859-1"),"utf-8")

Der Server gibt schließlich den Dateispeicherpfad zurück (Sie können den Rückgabeinhalt hier nach Ihren Wünschen definieren).

Schritte:

Uploadify konfigurieren

<%@ page language="java" contentType="text/html;charset=UTF-8" pageEncoding="UTF-8"%>
<%String path = request.getContextPath();%>
<%String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<base href="<%=basePath %>">
<title></title>
<link rel="stylesheet" type="text/css" href="jquery-easyui-1.4.3/themes/default/easyui.css">
<link rel="stylesheet" type="text/css" href="jquery-easyui-1.4.3/themes/icon.css">
<script type="text/javascript" src="jquery-easyui-1.4.3/jquery.min.js"></script>
<script type="text/javascript" src="jquery-easyui-1.4.3/jquery.easyui.min.js"></script>
<script type="text/javascript" src="uploadify/uploadify/jquery.uploadify.min.js"></script>
<link rel="stylesheet" type="text/css" href="uploadify/uploadify/uploadify.css" />
</head>
<script>
$(function(){
$(function() {
$(function() {
$('#file_upload').uploadify({
'uploader' : '<%=basePath%>/UploadServlet',//服务端地址
'swf' : 'uploadify/uploadify/uploadify.swf',
'buttonImage' : 'uploadify/uploadify/img/chooseFile.jpg',//重载按钮图片
'buttonClass' : 'some-class',//重载按钮样式
'height':19,//按钮宽度和高度
'width':76,
'queueID' : 'file_queue',//显示文件队列的一个div,在页面定义
'formData' : {'parm1':'参数1','year':'2016'},//附加参数,可以在upload参数中更改
'buttonText':'选择文件',//按钮显示文字,如果有图片的话,会被图片挡住
'fileSizeLimit':'1MB',//文件最大
'auto':false,//自动提交
'fileTypeExts' : '*.gif; *.jpg; *.png',//文件类型
'fileTypeDesc' : '只能上传图片',//选择文件的时候的提示信息
'multi' : true,//多选
'queueSizeLimit' : 3,//队列中文件的个数
'onSelect' : function(file) {
console.log(file);
alert("选择文件:" + file.name + "\n类型="+file.type+"\n大小="+file.size);
if(file.size>1024000){//文件太大,取消上传该文件
alert("文件大小超过限制!");
$('#file_upload').uploadify('cancel',file.id);
}
},
'onUploadSuccess' : function(file, data, response) {
alert('每个文件上传成功后触发 ' + file.name + ' was successfully uploaded with a response of ' + response + ':' + data);
},
'onUploadComplete' : function(file) {
alert('每个文件上传完成,无论对错都触发! ' + file.name + ' finished processing.');
},
'onUploadError' : function(file, errorCode, errorMsg, errorString) {
alert('上传出错 ' + file.name + ' could not be uploaded: ' + errorString);
},
'onQueueComplete':function(queueData){
alert("队列中的所有文件上传完成后触发。
"+queueData.uploadsSuccessful+'\n'+queueData.uploadsErrored)
},
});
});
});
});
function upload(){
$('#file_upload').uploadify("settings","formData",{"name1":"中文name","parm1":"修改后的参数"});
$('#file_upload').uploadify('upload', '*');//上传所有文件
}
function cancel(){
$('#file_upload').uploadify('cancel', '*');//取消所有文件
}
function destroy(){
alert("取消upload上传,变成原来样式!");
$('#file_upload').uploadify('destroy');//destory
}
</script>
<body>
<div class="easyui-panel" title="说明" style="margin-bottom:15px">
</div>
<div class="easyui-panel" style="text-align:center;margin-bottom:15px">
<a href="javascript:void(0)" class="easyui-linkbutton" onclick="upload()">开始上传</a>
<a href="javascript:void(0)" class="easyui-linkbutton" onclick="cancel()">取消上传</a>
<a href="javascript:void(0)" class="easyui-linkbutton" onclick="destroy()">destroy</a>
<input type="file" name="file_upload" id="file_upload" />
<div id="file_queue" style="width:400px;height:10px;position:absolute;z-index:999"></div>
</div>
</body>
</html>
Nach dem Login kopieren

Server

package com.servlet;
import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import java.util.UUID;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
/**
* Servlet implementation class UploadServlet
*/
@WebServlet(name="UploadServlet",urlPatterns="/UploadServlet")
public class UploadServlet extends HttpServlet {
private static final long serialVersionUID = -6483558339095298703L;
/**
* @see HttpServlet#HttpServlet()
*/
public UploadServlet() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
response.getWriter().append("Served at: ").append(request.getContextPath());
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("获取session,可以根据这个session进行一些其他的判断" + request.getSession().getId());
SimpleDateFormat sdf=new SimpleDateFormat("yyyyMMdd");
String remotePath = File.separator + "download" + File.separator + sdf.format(new Date()) + File.separator;
String savePath = remotePath;
File dfile = new File(savePath);
if (!dfile.exists()) {
dfile.mkdirs();
}
DiskFileItemFactory fac = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(fac);
upload.setHeaderEncoding("UTF-8");
List<FileItem> fileList = null;
try {
fileList = upload.parseRequest(request);
} catch (FileUploadException ex) {
return;
}
Iterator<FileItem> it = fileList.iterator();
String name = "";
String extName = "";
while (it.hasNext()) {
FileItem item = it.next();
if (!item.isFormField()) {
name = item.getName();
long size = item.getSize();
String type = item.getContentType();
System.out.println("文件=" + name + " " + size + " " + type);
if (name == null || name.trim().equals("")) {
continue;
}
// 扩展名格式:
if (name.lastIndexOf(".") >= 0) {
extName = name.substring(name.lastIndexOf("."));
}
File file = null;
do {
// 生成文件名:
name = UUID.randomUUID().toString();
file = new File(savePath + name + extName);
} while (file.exists());
File saveFile = new File(savePath + name + extName);
try {
item.write(saveFile);
} catch (Exception e) {
e.printStackTrace();
}
}else if(item.isFormField()){
System.out.println("表单内容:" + item.getFieldName() + "=" + new String(item.getString().getBytes("iso8859-1"),"utf-8"));
}
}
String requestPath = remotePath + name + extName;
request.getSession().setAttribute(requestPath, requestPath);
response.getWriter().write(savePath + name + extName);
}
}
Nach dem Login kopieren

Verwandte Etiketten:
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 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!