บทความนี้แบ่งออกเป็นสองด้านเพื่ออธิบาย:
1. Java ใช้การอัปโหลดหลายไฟล์แบบไดนามิก
2. แก้ปัญหาการเปลี่ยนชื่อไฟล์ Java
สำหรับการอ้างอิงของคุณเนื้อหาเฉพาะมีดังนี้
1. อัปโหลดหลายไฟล์แบบไดนามิก
<form name = "xx" action = "<c: url value = '/up3servlet' //>" method = "post" enctype = "multipart/form-data"> <table id = "tb"> <tr> <td> ไฟล์: </td> <td> </tr> </table> <br/> <อินพุต type = "ปุ่ม" onclick = "_ ส่ง ();" value = "upload"> <input onClick = "_ add ();" type = "button" value = "เพิ่ม"> </form> </body> <script type = "text/javascript"> function _add () {var tb = document.getElementById ("tb"); // เขียนบรรทัด var tr = tb.insertrow (); // เขียนคอลัมน์ var td = tr.insertcell (); // เขียนข้อมูล td.innerhtml = "ไฟล์:"; // ประกาศ td var td2 = tr.insertcell (); // เขียนอินพุต td2.innerhtml = '<input type = "file" name = "file"/> <button onclick = "_ del (this);"> ลบ </button>'; } ฟังก์ชั่น _del (btn) {var tr = btn.parentNode.parentNode; //alert(tr.tagname); // รับตัวห้อยของ tr ในตาราง var index = tr.rowindex; // ลบ var tb = document.getElementById ("tb"); tb.deleterow (ดัชนี); } function _submit () {// transTraverse ไฟล์ทั้งหมด var files = document.getElementByName ("ไฟล์"); if (files.length == 0) {Alert ("ไม่มีไฟล์ที่สามารถอัปโหลดได้"); กลับเท็จ; } สำหรับ (var i = 0; i <files.length; i ++) {ถ้า (ไฟล์ [i] .value == "") {แจ้งเตือน (""+(i+1)+"ไฟล์ไม่ว่าง"); กลับเท็จ; }} document.forms ['xx']. submit (); } </script> </html>วนซ้ำผ่านไฟล์ทั้งหมดเพื่ออัปโหลด
2. แก้ปัญหาชื่อไฟล์ที่ซ้ำกัน
แพ็คเกจ cn.hx.servlet; นำเข้า java.io.file; นำเข้า java.io.ioException; นำเข้า java.io.printwriter; นำเข้า java.util.arraylist; นำเข้า java.util.list; นำเข้า Java.Util.UUID javax.servlet.http.httpservletrequest; นำเข้า Javax.servlet.http.httpservletResponse; นำเข้า org.apache.commons.fileupload.fileitem; นำเข้า org.apache.commons.fileupload org.apache.commons.fileupload.servlet.servletfileupload; นำเข้า org.apache.commons.io.fileutils; ชั้นเรียนสาธารณะ upimgservlet ขยาย httpservlet {โมฆะสาธารณะ dopost (httpservletrequest Request request.Setcharacterencoding ("UTF-8"); String path = getServletContext (). getRealPath ("/up"); DiskFileItemFactory Disk = ใหม่ DiskFileItemFactory (1024*10, ไฟล์ใหม่ ("D:/A")); servletFileUpload up = new servletFileUpload (ดิสก์); ลอง {list <fileItem> list = up.parserequest (คำขอ); // รับเพียงภาพ*.jpg-amge/jpege., bmp/imge/bmp, png, รายการ <string> imgs = new ArrayList <String> (); สำหรับ (ไฟล์ fileitem: list) {if (file.getContentType (). มี ("image/")) {สตริง filename = file.getName (); filename = filename.substring (filename.lastindexof ("//")+1); // รับส่วนขยายสตริง extName = filename.substring (filename.lastindexof (".")); //. jpg // uuid string uuid = uuid.randomuuid (). toString () แทนที่ ("-", "); // สตริงชื่อใหม่ newName = UUID+extName; // UUID ใช้เพื่อสร้างชื่อโฟลเดอร์ใหม่เพื่อที่จะไม่ทำให้ชื่อที่ซ้ำกัน FileUtils.CopyInputStreamTofile (file.getInputStream (), ไฟล์ใหม่ (path+"/"+newName)); // ใส่ในรายการ imgs.add (newname); } file.delete (); } request.setAttribute ("IMGS", IMGS); request.getRequestDispatcher ("/jsps/imgs.jsp") ส่งต่อ (คำขอ, การตอบกลับ); } catch (exception e) {e.printstacktrace (); -ข้างต้นใช้การอัปโหลด Java Multi-File ซึ่งแก้ปัญหาชื่อไฟล์ที่ซ้ำกัน ฉันหวังว่ามันจะเป็นประโยชน์กับการเรียนรู้ของทุกคน