อัพโหลดอิมเมจรูปภาพ Java Web Image และไฟล์
การอัปโหลดรูปภาพและการอัปโหลดไฟล์นั้นเหมือนกันและภาพเองก็เป็นไฟล์ การอัปโหลดไฟล์คือการอัปโหลดรูปภาพไปยังเซิร์ฟเวอร์ แม้ว่าจะมีหลายวิธีการใช้งานพื้นฐานคือทั้งหมดที่เกี่ยวกับการอ่านและการเขียนไฟล์
สิ่งที่ควรทราบ
1. แบบฟอร์มจะต้องเขียนแอตทริบิวต์ enctype = "multipart/form-data"
2. เพื่อให้แน่ใจว่าไฟล์สามารถอัปโหลดได้สำเร็จค่าแอตทริบิวต์ชื่อของการควบคุมไฟล์จะต้องสอดคล้องกับชื่อตัวแปรเลเยอร์ควบคุมที่คุณส่ง
ตัวอย่างเช่นหากชื่อพื้นที่เป็นไฟล์คุณต้องกำหนดไว้ในพื้นหลัง
ไฟล์ไฟล์ส่วนตัว // ชื่อควบคุมไฟล์
สตริงส่วนตัว fileContentType; // ประเภทภาพ
FileFilename สตริงส่วนตัว; // ชื่อไฟล์
1.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"> <meta http-equiv = "pragma" content = "no-cache"/> enctype = "multipart/form-data"> <input type = "file" name = "file" value = "file"> <input type = "ส่ง" value = "identify"> </form> </body> </html>
1. คอนโทรลเลอร์ที่ต้องส่งข้อมูลหน้าเว็บ
แพ็คเกจ com.cpsec.tang.chemical.action; นำเข้า java.io.file; นำเข้า java.io.ioexception; นำเข้า java.util.random; นำเข้า Javax.annotation.resource; นำเข้า javax.servlet.http.httpservlet org.apache.struts2.servletactionContext; นำเข้า org.springframework.stereotype.controller; นำเข้า com.cpsec.tang.chemical.biz.lunbobiz; นำเข้า com.cpsec.tang.cpsic.tang) Lunboaction ขยาย ActionsUpPort { / ** * * / ส่วนตัวคงที่สุดท้าย Long SerialVersionUid = 1L; @Resource (name = "lunbobiz") Private Lunbobiz Lunbobiz; ภาพส่วนตัว ไฟล์ไฟล์ส่วนตัว // ชื่อควบคุมไฟล์สตริงส่วนตัว fileContentType; // ประเภทภาพสตริงส่วนตัวไฟล์ FileName; // ชื่อไฟล์จำนวนเต็มส่วนตัว; Public String findImage () {image = lunbobiz.findimage (); กลับมาประสบความสำเร็จ } สตริงสาธารณะ leverimage () {image = lunbobiz.findimage (); กลับมาประสบความสำเร็จ } public string public leverimage1 () {httpservletRequest request = servletactionContext.getRequest (); string root = request.getRealPath ("/upload"); // พา ธ เซิร์ฟเวอร์ที่รูปภาพจะต้องอัปโหลดชื่อสตริง [] = fileFilename.split ("//."); String filename = ""; if (names.length> = 1) {filename = getRandomString (20)+"."+ชื่อ [names.length-1]; } string picpath = "อัปโหลด/"+ชื่อไฟล์; // พา ธ ของภาพที่บันทึกไว้ในไฟล์ฐานข้อมูลไฟล์ 1 = ไฟล์ใหม่ (รูท); ลอง {fileutils.copyfile (ไฟล์, ไฟล์ใหม่ (ไฟล์ 1, ชื่อไฟล์)); }} catch (ioexception e) {e.printstacktrace (); } คืนความสำเร็จ; } /*รับสตริงสุ่ม* /สตริงสาธารณะ getRandomString (ความยาว int) {// ความยาวหมายถึงความยาวของสตริงสตริงที่สร้างขึ้นฐาน = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; สุ่มสุ่ม = ใหม่สุ่ม (); StringBuffer sb = new StringBuffer (); สำหรับ (int i = 0; i <length; i ++) {หมายเลข int = random.nextint (base.length ()); sb.append (base.charat (หมายเลข)); } return sb.toString (); -นี่คือการอัปโหลดไฟล์โดยการคัดลอกและมีวิธีอื่น
วิธีที่ 2
@Controller ("สัญญา") การทำสัญญาระดับสาธารณะขยายการกระทำ actionsUpPort {สตริงคงสุดท้ายของส่วนตัว uploaddir = "/files"; // พา ธ เพื่ออัปโหลดไฟล์สร้างไฟล์ไฟล์ส่วนตัวภายใต้เว็บคอนสต์; // ชื่อควบคุมอินพุตจะต้องเป็นไฟล์ // อัปโหลดชื่อไฟล์รวบรวมไฟล์สตริงส่วนตัว fileFileName; // อัปโหลดประเภทไฟล์ประเภทไฟล์การรวบรวมสตริงส่วนตัว fileContentType; ชื่อไฟล์สตริงส่วนตัว; การอัปโหลดสตริงสาธารณะ () พ่น FilenotFoundException, iOException {String Path = uploadFile (); // พา ธ ไปยังไฟล์บันทึกฐานข้อมูลการส่งคืนความสำเร็จ; } // ดำเนินการฟังก์ชั่นการอัปโหลด @SuppressWarnings ("Deprecation") สตริงสาธารณะ uploadFile () พ่น FilenotFoundException, iOexception {ลอง {inputStream ใน = new FileInputStream (ไฟล์); String dir = servletactionContext.getRequest (). getRealPath (uploaddir); ไฟล์ fileLocation = ไฟล์ใหม่ (dir); // คุณสามารถสร้างไดเรกทอรีการอัปโหลดเป้าหมายด้วยตนเองในไดเรกทอรีรากแอปพลิเคชันถ้า (! fileLocation.exists ()) {บูลีน iscreated = fileLocation.mkdir (); if (! iscreated) {// ที่สร้างขึ้นไม่สามารถสร้างไดเรกทอรีการอัปโหลดเป้าหมายการประมวลผลอื่น ๆ สามารถทำได้เช่นการโยนข้อยกเว้นที่กำหนดเอง ฯลฯ สถานการณ์นี้ไม่ควรเกิดขึ้น คืนค่า null; }} // this.setFileFileName (getRandomString (20)); String [] name = this.getFileFileName (). แยก ("//."); string filename = getRandomString (20)+"."+name [name.length-1]; this.setFileFileName (ชื่อไฟล์); System.out.println (ชื่อไฟล์); ไฟล์ uploadFile = ไฟล์ใหม่ (dir, ชื่อไฟล์); outputStream out = new fileOutputStream (uploadFile); ไบต์ [] บัฟเฟอร์ = ไบต์ใหม่ [1024 * 1024]; ความยาว int; ในขณะที่ ((length = in.read (buffer))> 0) {out.write (บัฟเฟอร์, 0, ความยาว); } in.close (); out.close (); return uploaddir.substring (1)+"//"+filefilename; } catch (filenotfoundexception ex) {return null; } catch (ioexception ex) {return null; }} สตริงคงที่สาธารณะ getRandomString (ความยาว int) {string str = "abcdefghijklmnopqrstuvwxyzabcdefhijklmnopqrstuvwxyz0123456789"; สุ่มสุ่ม = ใหม่สุ่ม (); StringBuffer sb = new StringBuffer (); สำหรับ (int i = 0; i <length; i ++) {หมายเลข int = random.nextint (62); sb.append (str.charat (หมายเลข)); } return sb.toString (); -นอกเหนือจากการอัปโหลดภาพเดียวแล้วยังมีการอัปโหลดรูปภาพหลายภาพและหลักการก็เหมือนกัน
แพ็คเกจ com.cpsec.tang.chemical.action; นำเข้า java.io.file; นำเข้า Java.io.FileInputStream; นำเข้า java.io.filenotfoundException; นำเข้า Java.io.FileOutputStream; นำเข้า java.io.ioException; นำเข้า Java.io.InputStream; นำเข้า Java.io.OutputStream; นำเข้า java.util.list; นำเข้า javax.servlet.http.httpservletrequest; นำเข้า org.apache.struts2.servletactionContext; นำเข้า com.opensymphony.xwork2.ActionSupport; "/อัปโหลด"; // อัปโหลดรายการไฟล์ส่วนตัว <file> ไฟล์; // อัปโหลดชื่อไฟล์รายการส่วนตัว <String> fileFileName; // อัปโหลดประเภทไฟล์ประเภทไฟล์การรวบรวมรายการส่วนตัว <String> fileContentType; รายการสาธารณะ <file> getFile () {return file; } โมฆะสาธารณะ setFile (รายการ <file> ไฟล์) {this.file = ไฟล์; } รายการสาธารณะ <String> getFileFileName () {return fileFileName; } โมฆะสาธารณะ setFileFileName (รายการ <String> fileFileName) {this.fileFileName = fileFileName; } รายการสาธารณะ <String> getFileContentType () {return fileContentType; } โมฆะสาธารณะ setFileContentType (รายการ <String> fileContentType) {this.fileContentType = fileContentType; } public String uploadform () พ่นข้อยกเว้น {httpservletRequest request = servletactionContext.getRequest (); String webPath = null; // path upload สำหรับ (int i = 0; i <file.size (); i ++) {// loop อัปโหลดแต่ละไฟล์ uploadfile (i); webPath = "อัปโหลด/"+this.getFileFileName () รับ (i); } return "ความสำเร็จ"; } // ดำเนินการฟังก์ชันการอัปโหลดสตริงส่วนตัว uploadfile (int i) พ่น filenotfoundexception, ioexception {ลอง {inputStream ใน = ใหม่ fileInputStream (file.get (i)); String dir = servletactionContext.getRequest (). getRealPath (uploaddir); ไฟล์ fileLocation = ไฟล์ใหม่ (dir); // ที่นี่คุณสามารถสร้างไดเรกทอรีการอัปโหลดเป้าหมายด้วยตนเองในไดเรกทอรีรากแอปพลิเคชันถ้า (! fileLocation.exists ()) {บูลีน iscreated = fileLocation.mkdir (); if (! iscreated) {// หากมีการสร้างไดเรกทอรีการอัปโหลดเป้าหมายการประมวลผลอื่น ๆ สามารถทำได้เช่นการขว้างข้อยกเว้นที่กำหนดเอง ฯลฯ สถานการณ์นี้ไม่ควรเกิดขึ้น คืนค่า null; }} string filename = this.getFileFileName (). get (i); ไฟล์ uploadFile = ไฟล์ใหม่ (dir, ชื่อไฟล์); outputStream out = new fileOutputStream (uploadFile); ไบต์ [] บัฟเฟอร์ = ไบต์ใหม่ [1024 * 1024]; ความยาว int; ในขณะที่ ((length = in.read (buffer))> 0) {out.write (บัฟเฟอร์, 0, ความยาว); } in.close (); out.close (); return uploadfile.toString (); } catch (filenotfoundexception ex) {return null; } catch (ioexception ex) {return null; -ขอบคุณสำหรับการอ่านฉันหวังว่ามันจะช่วยคุณได้ ขอบคุณสำหรับการสนับสนุนเว็บไซต์นี้!