เมื่อเร็ว ๆ นี้ฉันได้ทำการอัปโหลดดาวน์โหลดและเปิดไฟล์ออนไลน์แล้ว ที่จุดเริ่มต้นอินเตอร์เฟสการอัปโหลดไฟล์มีแบบฟอร์มอื่น ๆ (เช่นกล่องอินพุตรหัสผ่าน ฯลฯ ) และพบปัญหามากมายในระหว่างกระบวนการอัปโหลด ด้านล่างนี้ฉันเขียนโปรแกรมทดสอบที่ใช้การอัปโหลดไฟล์ดาวน์โหลดและเปิดไฟล์ออนไลน์พร้อมกัน
ก่อนอื่นโปรดดูการเรนเดอร์:
รหัสหลัก:
แพ็คเกจ com.jefry; นำเข้า Java.io.File; นำเข้า Java.io.FileInputStream; นำเข้า java.io.ioException; นำเข้า java.net.url; นำเข้า java.util.arraylist; นำเข้า java.util.iterator; นำเข้า java.util.list; นำเข้า javax.servlet.servletexception; นำเข้า Javax.servlet.servletOutputStream; นำเข้า Javax.servlet.http.httpservlet; นำเข้า javax.servlet.http.httpservletrequest; นำเข้า Javax.servlet.http.httpservletResponse; นำเข้า org.apache.Commons.FileUpload.FileItem; นำเข้า org.apache.commons.fileupload.disk.diskfileitemfactory; นำเข้า org.apache.commons.fileupload.servlet.servletFileUpload; / ** * คลาสการใช้งาน servlet fileupload */ public class fileupload ขยาย httpservlet {ส่วนตัวคงที่สุดท้าย Long SerialVersionUid = 1l; สตริงสุดท้ายคงที่ส่วนตัว filedir = "f:/"; /*** ตัวสร้างเริ่มต้น */ public fileupload () {} void doget ที่ได้รับการป้องกัน (คำขอ httpservletRequest, การตอบสนอง httpservletResponse) พ่น servletexception, ioexception {string afilename = request.getParameter ("filename"); string online = request.getParameter ("ออนไลน์"); FileInputStream ใน = null; servletoutputStream out = null; บูลีน isOnline = ออนไลน์! = null? จริง: เท็จ; ลอง {ถ้า (isOnline) {url u = url ใหม่ ("ไฟล์: ///" + filedir + afilename); Response.SetContentType (U.OpenConnection (). getContentType ()); Response.SetheAder ("เนื้อหา-การจัดสรร", "inline; filename ="+afilename); } else {response.setContentType ("แอปพลิเคชัน/x-msdownload"); Response.SetheAder ("เนื้อหา-การจัดสรร", "สิ่งที่แนบมา; ชื่อไฟล์ =" + Afilename); } in = new FileInputStream (FileDir + Afilename); out = response.getOutputStream (); out.flush (); int aread = 0; ในขณะที่ ((aread = in.read ())! = -1 & in! = null) {out.write (aread); } out.flush (); } catch (throwable e) {e.printstacktrace (); } ในที่สุด {ลอง {in.close (); out.close (); } catch (throwable e) {e.printstacktrace (); }}} void dopost (httpservletrequest Request, httpservletResponse Response) พ่น servletexception, ioexception {ลอง {diskfileitemfactory fileFactory = ใหม่ diskfileitemfactory (); servletFileUpload fu = ใหม่ servletFileUpload (fileFactory); รายการ fileItems = fu.parserequest (คำขอ); Iterator iter = fileItems.iterator (); uploader สตริง = null; สตริงวันที่ = null; รายการ <String> filenames = new ArrayList <String> (); ในขณะที่ (iter.hasnext ()) {fileItem item = (fileItem) iter.next (); if (! item.isformfield ()) {// ไฟล์สตริง oldFileName = item.getName (); สตริง newfilename = null; int delimiter = oldfilename.lastindexof ("/"); if (delimiter == -1) newfilename = oldFileName.substring (คั่น + 1); else newfilename = oldfilename; fileenames.add (newfilename); item.write (ไฟล์ใหม่ (filedir + newfilename)); } else {// ฟอร์มสตริง fieldName = item.getFieldName (); if ("uploader" .equals (fieldName)) {uploader = item.getString (); } อื่นถ้า ("วันที่" .Equals (fieldName)) {date = item.getString (); }}} request.setAttribute ("ชื่อไฟล์", ชื่อไฟล์); request.getRequestDispatcher ("download.jsp") ส่งต่อ (คำขอ, การตอบกลับ); } catch (Exception E) {}}}} index.jsp
<%@ page language = "java" contentType = "ข้อความ/html; charset = utf-8" pageencoding = "utf-8"%> <! doctype html สาธารณะ "-// w3c // dtd html 4.01 transitional // en" <html> <head> <meta http-equiv = "content-type" content = "text/html; charset = utf-8"> <title> แทรกชื่อเรื่องที่นี่ </title> </head> <body> <form action = "fileUpload" ไฟล์ "post" enctype = "multipart/formarta <br> ไฟล์ 2: <อินพุต type = "file" name = "file2"/> <br> uploader: <input type = "text" name = "uploader"/> <br> วันที่: <อินพุต type = "text" name = "วันที่"/> <br>
download.jsp
<%@ page language = "java" contentType = "ข้อความ/html; charset = utf-8" pageencoding = "utf-8"%> <! doctype html สาธารณะ "-// w3c // dtd html 4.01 transitional // en" <%@page import = "java.util.list"%> <html> <head> <meta http-equiv = "content-type" content = "text/html; charset = utf-8"> <title> insert title ที่นี่ </title> </head> <body> <body> ) request.getAttribute ("ชื่อไฟล์"); สำหรับ (String filename: ชื่อไฟล์) { %> <form action = "fileupload" method = "get"> <อินพุต type = "hidden" name = "filename" value = "< %= filename %>" /> <อินพุตประเภท = "submit" value = "下载: < %= filename ชื่อ filenames) { %> <form action = "fileupload" method = "get"> <input type = "hidden" name = "filename" value = "< %= filename %>" /> <อินพุต type = "hidden" name = "online" value = "ใช่" /> <อินพุต </html>บทความนี้ได้รวบรวมไว้ใน "สรุปเทคนิคการดำเนินการอัพโหลด Java" และทุกคนยินดีที่จะเรียนรู้และอ่าน
ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่ามันจะเป็นประโยชน์ต่อการเรียนรู้ของทุกคนและฉันหวังว่าทุกคนจะสนับสนุน wulin.com มากขึ้น