本文实例为大家分享了 Java 实现文件上传的具体代码 , 具体内容如下
1 、 Java 代码 :
paket com.github.reston.servlet; impor java.io.file; impor java.io.fileoutputStream; impor java.io.ioException; impor java.io.printwriter; import java.util.iterator; import java.util.list; impor javax.servlet.servletconfig; impor javax.servlet.servletException; impor javax.servlet.annotation.webservlet; import javax.servlet.http.httpservlet; impor javax.servlet.http.httpservlet; javax.servlet.http.httpservletResponse; impor org.apache.commons.fileupload.fileItem; impor org.apache.commons.fileupload.fileItemFactory; import org.apache.commons.fileupload.disk.diskfileItemFactory; import org.apache.commons.fileuLoadserve.apapileUderuLoAderuLoad; org.apache.commons.io.ioutils; @WebServlet ("/AjaxUpload") Kelas Publik AjaxUpload memperluas httpservlet {@Override public void init (servletconfig config) melempar ServletException {// TODO METODE AUTO-DIHOMPOL SUPER.INIT (config); } @Override Protected Void Service (permintaan httpservletRequest, respons httpservletResponse) melempar servletException, ioException {response.setContentType ("Teks/html"); request.setcharacterencoding ("UTF-8"); boolean ismultipart = servletfileupload.ismultipartcontent (permintaan); String basepath = getSerVletContext (). GetRealPath ("/unggah"); File berbasis direktori = file baru (Basepath); String filename = ""; start panjang = 0; if (! BasedIrectory.isdirectory ()) berbasis -direReCtory.mkdirs (); if (isMultiPart) {coba {fileItemFactory factory = new diskfileIteMfactory (); SERVLETFILEUPLOAD UEDLOAD = SERVLETFILEUPLOAD baru (pabrik); @SuppressWarnings ("Uncecked") Daftar <FILEItEM> FileItems = unggah.ParseRequest (permintaan); untuk (FileItem i: FileItems) {if (i.isFormField ()) {string name = i.getFieldName (); Nilai string = i.getString (); if (name.equals ("start")) start = long.parselong (i.getString ()); }} untuk (item FileItem: FileItems) {if (item.ISFormField ()) lanjutkan; fileName = item.getFieldName (); if (mkdir (basepath)) {file fileonServer = createFile (basepath, fileName); 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 ("{/" panjang/":/" "+fileonServer.length ()+"/"}"); pw.flush (); }}} catch (exception e) {}}} file private createFile (jalur string, nama string) melempar ioException {file tmp = file baru (path, name); if (! tmp.exists ()) {tmp.createNewFile (); } return tmp; } private boolean mkdir (string path) {boolean hasil = true; File tmp = file baru (path); if (! tmp.isdirectory ()) {result = tmp.mkdirs (); } hasil pengembalian; }}2 、 Java 代码 :
var ajaxupload = function (e) { / ** * e URL Metode Data Kesalahan Keberhasilan * / var xmlHttpRequest; if (window.xmlHttpRequest) {xmlHttpRequest = new xmlHttpRequest (); if (xmlHttpRequest.overridemimetype) {xmlHttpRequest.overridemimetype ("Text/xml"); }} lain jika (window.activexObject) {var activeName = ["msxml2.xmlhttp", "microsoft.xmlhttp"]; untuk (var i = 0; i <activeName.length; i ++) {coba {xmlHttpRequest = new ActivexObject (ActiveName [i]); merusak; } catch (e) {return; }}} if (xmlHttpRequest == tidak terdefinisi || xmlHttpRequest == null) {alert ("xmlHttpRequest 对象创建失败!!"); kembali; } else {this.xmlhttp = xmlHttpRequest; } var file = document.geteLementById (e.id); if (this.xmlHttp! = Undefined && this.xmlHttp! = null) {e.method = e.method.touppercase (); if (e.method! = "get" && e.method! = "POST") {alert ("http 的请求方法必须为 Dapatkan 或 Posting !!!"); kembali; } if (e.url == null || e.url == tidak terdefinisi) {e.alert ("http 的请求地址必须设置!"); kembali; }} this.xmlHttp.onReadyStateChange = function () {if (this.readyState == 4) {if (this.status == 200) {var responseText = this.Responsetext; var responsexml = this.reponsexml; if (e.success == tidak terdefinisi || e.success == null) {alert ("没有设置处理数据正确返回的方法"); alert ("返回的数据 :" + responseText); } else {e.success (responseText, responsexml); }} else {if (e.ror == tidak terdefinisi || e.error == null) {alert ("没有设置处理数据返回失败的处理方法!"); alert ("http 的响应码 :" + this.status + ", 响应码的文本信息 :" + this.statustext); } else {e.Error (this.status, this.statustext); }}}} // var formhtm = "<bentuk id = 'output' enctype = 'multipart/form-data'> </form>"; var filename = getFileName (e.id); this.xmlhttp.open (e.method, e.url, true); var data = formdata baru (document.getElementById ("output")); data.append ("name", fileName); data.append ("start", e.data.start); data.append (nama file, document.getElementById (e.id) .files [0] .slice (e.data.start, getFileSize (e.id))); this.xmlHttp.send (data);} function 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);} function getFileSize (id) {return document.getElementById (id) .files [0] .size;}3 、 html 代码 :
<! Doctype html> <html> <head> <meta http-equiv = "konten-tipe" content = "text/html; charset = utf-8"> <script type = "text/javascript" src = "test.js"> </script> </head> <body> <input type = "test.js"> </script> </head> <body> <input type = "fILE" = "unggah" " value = "上传"/> <span> 请选择要上传的文件 (小于 1g) </span> <input type = "tombol" value = "上传" onsClick = "test ();"/> <Form id = "output" enctype = "multipart/form-data"> </form> <cript> uji fungsi () {AJAXUPLOAD ({{{{{{{{{{{{{{{{{{{{{{", "/PCC/RESTON/AJAXUPLOAD", Metode: "Post", Data: {Start: 0}, Success: Function (e) {var l = json.parse (e) .length; : function (e) {console.log (e); } </script> </body> </html>以上就是本文的全部内容 , 希望对大家学习 Java 程序设计有所帮助。