本文实例为大家分享了 Java 实现文件上传的具体代码, 具体内容如下
1、 Java 代码:
แพ็คเกจ com.github.reston.servlet; นำเข้า java.io.file; นำเข้า java.io.fileOutputStream; นำเข้า java.io.ioException; นำเข้า java.io.printwriter; นำเข้า java.util.iterator; นำเข้า java.util.list; นำเข้า Javax.servlet.servletConfig; นำเข้า Javax.servlet.servletexception; นำเข้า Javax.servlet.annotation.webservlet; นำเข้า Javax.servlet.http.httpservlet; นำเข้า Javax.servlet.http.https javax.servlet.http.httpservletResponse; นำเข้า org.apache.commons.fileupload.fileitem; นำเข้า org.apache.commons.fileupload.fileitemfactory; นำเข้า org.apache.Commons.FileUpload.Disk.DiskFileItemFactory; org.apache.commons.io.ioutils; @webservlet ("/ajaxupload") คลาสสาธารณะ ajaxupload ขยาย httpservlet {@Override public void init (servletConfig config) โยน servletexception {// todo วิธีการที่กำหนดอัตโนมัติ super.init (config); } @Override Void Service (HTTPSERVLETREQUEST Request, HTTPSERVLETRESSESSENTES) พ่น ServleTexception, iOException {Response.SetContentType ("ข้อความ/html"); request.Setcharacterencoding ("UTF-8"); บูลีน ismultipart = servletfileupload.ismultipartcontent (คำขอ); String basepath = getServletContext (). getRealPath ("/อัปโหลด"); ไฟล์ based rechedirectory = ไฟล์ใหม่ (basepath); String filename = ""; เริ่มยาว = 0; if (! asedirectory.isdirectory ()) basedirectory.mkdirs (); if (isMultipart) {ลอง {fileItemFactory Factory = ใหม่ diskFileItemFactory (); ServletFileUpload Upload = ใหม่ servletFilePilePload (โรงงาน); @suppresswarnings ("ไม่ได้ตรวจสอบ") รายการ <fileitem> fileItems = upload.parserequest (คำขอ); สำหรับ (fileItem I: fileItems) {ถ้า (i.isformfield ()) {ชื่อสตริง = i.getFieldName (); ค่าสตริง = i.getString (); if (name.equals ("start")) start = long.parselong (i.getString ()); }} สำหรับ (fileItem item: fileItems) {ถ้า (item.isformfield ()) ดำเนินการต่อ; filename = item.getFieldName (); if (mkdir (basepath)) {ไฟล์ fileonserver = createFile (basepath, ชื่อไฟล์); if (fileonserver.length () == 0) {fileOutputStream fos = ใหม่ fileOutputStream (fileOnserver, true); ioutils.copy (item.getInputStream (), fos); } if (start> 0) {fileOutputStream fos = ใหม่ fileOutputStream (fileOnserver, true); ioutils.copy (item.getInputStream (), fos); } PrintWriter PW = Response.getWriter (); pw.write ("{/" ความยาว/":/" "+fileonserver.length ()+"/"}"); pw.flush (); }}} catch (Exception e) {}}} ไฟล์ส่วนตัว createFile (เส้นทางสตริง, ชื่อสตริง) พ่น IOException {ไฟล์ tmp = ไฟล์ใหม่ (พา ธ , ชื่อ); if (! tmp.exists ()) {tmp.createnewfile (); } ส่งคืน tmp; } บูลีนส่วนตัว mkdir (เส้นทางสตริง) {ผลลัพธ์บูลีน = true; ไฟล์ tmp = ไฟล์ใหม่ (พา ธ ); if (! tmp.isdirectory ()) {result = tmp.mkdirs (); } ผลตอบแทนผลลัพธ์; -2、 Java 代码:
var ajaxupload = function (e) { / ** * e url วิธีการข้อมูลความสำเร็จของข้อมูลข้อผิดพลาด * / var xmlhttprequest; if (window.xmlhttprequest) {xmlhttprequest = ใหม่ xmlhttprequest (); if (XMLHTTPREQUEST.OVERRIDEMIMETYPE) {XMLHTTPREQUEST.OVERRIDEMIMETYPE ("ข้อความ/XML"); }} else if (window.activexobject) {var activeName = ["msxml2.xmlhttp", "microsoft.xmlhttp"]; สำหรับ (var i = 0; i <actiVename.length; i ++) {ลอง {xmlhttpRequest = new ActiveXObject (ActiVename [i]); หยุดพัก; } catch (e) {return; }}} if (xmlhttprequest == undefined || xmlhttprequest == null) {alert ("xmlhttprequest 对象创建失败!!"); กลับ; } else {this.xmlhttp = xmlhttprequest; } var file = document.getElementById (E.ID); if (this.xmlhttp! = undefined && this.xmlhttp! = null) {e.method = e.method.touppercase (); ถ้า (E.Method! = "รับ" && e.method! = "โพสต์") {แจ้งเตือน ("http 的请求方法必须为รับ或โพสต์ !!!"); กลับ; } if (e.url == null || e.url == undefined) {e.alert ("http 的请求地址必须设置!"); กลับ; }} this.xmlhttp.onreadyStateChange = function () {ถ้า (this.readyState == 4) {ถ้า (this.status == 200) {var responseetext = this.ResponSetext; var responsexml = this.reponsexml; if (e.success == undefined || e.success == null) {แจ้งเตือน ("没有设置处理数据正确返回的方法"); การแจ้งเตือน ("返回的数据:" + ResponseText); } else {E.Success (ResponseText, Responsexml); }} else {ถ้า (e.error == undefined || e.error == null) {alert ("没有设置处理数据返回失败的处理方法!"); การแจ้งเตือน ("http 的响应码:" + this.status + ", 响应码的文本信息:" + this.statustext); } else {E.Error (this.status, this.statustext); }}}} // var formhtm = "<form id = 'output' enctype = 'multipart/form-data'> </form>"; var filename = getFilename (e.id); this.xmlhttp.open (e.method, e.url, true); var data = new FormData (document.getElementById ("เอาต์พุต")); data.append ("ชื่อ", ชื่อไฟล์); data.append ("start", e.data.start); data.append (ชื่อไฟล์, document.getElementById (e.id) .files [0] .slice (e.data.start, getFilesize (e.id))); this.xmlhttp.send (data);} ฟังก์ชั่น 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);} ฟังก์ชั่น getFilesize (id) {return document.getElementById (id) .files [0] .size;}3、 html 代码:
<! doctype html> <html> <head> <meta http-equiv = "content-type" content = "text/html; charset = utf-8"> <script type = "text/javascript" src = "test.js"> value = "上传"/> <span> 请选择要上传的文件 (小于 1g) </span> <อินพุต type = "ปุ่ม" value = "上传" onclick = "test ();"/> <form id = "output" enctype = "multipart/form-data"> </form> "/pcc/reston/ajaxupload", วิธี: "โพสต์", ข้อมูล: {เริ่มต้น: 0}, ความสำเร็จ: ฟังก์ชั่น (e) {var l = json.parse (e) .length; : ฟังก์ชั่น (e) {console.log (e);}}); } </script> </body> </html>以上就是本文的全部内容, 希望对大家学习 Java 程序设计有所帮助。