本文实例为大家分享了 Java 实现文件上传的具体代码 , 具体内容如下
1 、 Java 代码 :
Paket com.github.reston.servlet; Import Java.io.file; Import Java.io.FileOutputStream; Import Java.io.ioException; Import Java.io.printwriter; Import Java.util.iterator; Import Java.util.List; importieren javax.servlet.servletconfig; import javax.servlet.servletException; import javax.servlet.annotation javax.servlet.http.httpServletResponse; import org.apache.commons.FileUpload.FileItem; import org.apache.commons.FileUpload.FileItemfactory; org.apache.commons.io.ioutils; @WebServlet ("/ajaxUpload") öffentliche Klasse AjaxUpload erweitert httpServlet {@Override public void init (servletConfig config) löst ServletException aus {// Todo auto-generierter Methode Stub Super.init (config); } @Override Protected void Service (httpServletRequest -Anforderung, httpServletResponse -Antwort) löst ServletException aus, ioException {response.setContentType ("text/html"); request.setcharactercoding ("utf-8"); boolean ismultiPart = servletFileUpload.ismultipartContent (Anfrage); String basepath = getServletContext (). GetRealPath ("/upload"); File -basiertanleitung = neue Datei (Basepath); String Dateiname = ""; langer Start = 0; if (! basierend verzeichnis.isdirectory ()) -basierte Verzeichnis.mkdirs (); if (ismultiPart) {try {FileItemFactory factory = new diskFileItemFactory (); ServletFileUpload upload = new ServletFileUpload (fabrik); @SuppressWarnings ("Deaktiviert") List <FileItem> FileItems = Upload.ParSerequest (Anfrage); für (FileItem i: FileItems) {if (i.isformField ()) {String name = i.getFieldName (); String value = i.getString (); if (name.equals ("start") start = long.parselong (i.getString ()); }} für (FileItem item: FileItems) {if (item.isformfield ()) Fortsetzung; Dateiname = item.getFieldname (); if (mkdir (basepath)) {fileOnserver = createFile (Basepath, Dateiname); if (FileOnserver.length () == 0) {FileOutputStream fos = new FileOutputStream (FileOnserver, true); Ioutils.copy (item.getInputStream (), fos); } if (start> 0) {FileOutputStream fos = new FileOutputStream (FileOnserver, true); Ioutils.copy (item.getInputStream (), fos); } Printwriter pw = response.getWriter (); pw.write ("{/" Länge/":/" "+FileServer.length ()+"/"}"); pw.flush (); }}} catch (exception e) {}}} private Datei createFile (String -Pfad, String -Name) löst IOException {Datei tmp = neue Datei (Pfad, Name) aus; if (! tmp.exists ()) {tmp.createNewFile (); } return tmp; } private boolean mkdir (String -Pfad) {boolean result = true; Datei tmp = neue Datei (Pfad); if (! tmp.isdirectory ()) {result = tmp.mkdirs (); } Rückgabeergebnis; }}2 、 Java 代码 :
var ajaxUpload = Funktion (e) { / ** * E -URL -Methode Datenerfolgsfehler * / var xmlhttprequest; if (window.xmlhttprequest) {xmlhttprequest = new XmlHttprequest (); if (xmlhttprequest.overridemImetype) {xmlhttprequest.overridemimetype ("text/xml"); }} else if (window.activeXObject) {var acctionName = ["msxml2.xmlhttp", "microsoft.xmlhttp"]; für (var i = 0; i <activeName.length; i ++) {try {xmlhttpRequest = new ActiveXObject (activeName [i]); brechen; } catch (e) {return; }}} if (xmlhttpRequest == undefined || xmlhttpRequest == null) {alert ("xmlhttprequest 对象创建失败!!"); zurückkehren; } else {this.xmlhttp = xmlhttprequest; } var file = document.getElementById (e.id); if (this.xmlhttp! = undefined && this.xmlhttp! if (e.Method! = "get" && e.method! zurückkehren; } if (e.url == null || e.url == undefined) {e.alert ("http 的请求地址必须设置!"); zurückkehren; }} this.xmlhttp.onReadyStatechange = function () {if (this.ReadyState == 4) {if (this.status == 200) {var responsext = this.responSeText; var reACTIONXML = this.Reponsexml; if (e.success == undefined || e.success == null) {alert ("没有设置处理数据正确返回的方法"); alert ("返回的数据 :" + responsext); } else {e.success (responsext, responsexml); }} else {if (e.Error == undefined || e.Error == null) {alert ("没有设置处理数据返回失败的处理方法!"); alert ("http 的响应码 :" + this.status + ", 响应码的文本信息 :" + this.StatUntext); } else {e.Error (this.status, this.StatUntext); }}}} // var formHtm = "<Form ID = 'Ausgabe' EngeTePe = 'MultiPart/Form-Data'> </form>"; var Dateiname = getFileName (e.id); this.xmlhttp.open (E.Method, E.url, True); var data = new FormData (document.getElementById ("output")); Data.Append ("Name", Dateiname); Data.Append ("start", e.data.start); Data.Append (Dateiname, document.getElementById (e.id) .files [0] .Slice (e.Data.start, getFileSize (e.id)); this.xmlhttp.send (data);} Funktion getFileName (id) {var path = document.getElementById (id) .Value var pos1 = path.lastIndexof ('/'); var pos2 = path.lastIndexof ('//'); var pos = math.max (pos1, pos2); return path.substring (pos + 1);} Funktion getFileSize (id) {return document.getElementById (id) .files [0] .Size;}3 、 html 代码 :
<! DocType html> <html> <kopf> <meta http-äquiv = "content-type" content = "text/html; charset = utf-8"> <script type = "text/javaScript" src = "test.js"> </script> </head> <body> <body> <body> <body> <body> <body> <Body> <Body> <Body> <Body> <Body> <Body> <Body> <Body> <Body> <Body> <Body> <Body> <Body> <Body> <Body> <Body> <Body> <Body> <Body> <Body> <Body> <Body> <Body> <Body> <Body> <Body> <Body> <-input ". value="上传"/><span>请选择要上传的文件(小于1G)</span> <input type="button" value="上传" onclick="test();"/><form id="output" enctype="multipart/form-data" ></form> <script> function test(){ ajaxupload({ id : "upload", url : "/Pcc/reston/ajaxUpload", Methode: "post", Daten: {Start: 0}, Erfolg: Funktion (e) {var l = json.Parse (e) .Length; : Funktion (e) {console.log (e);}}); } </script> </body> </html>以上就是本文的全部内容 , 希望对大家学习 Java 程序设计有所帮助。