เมื่อเร็ว ๆ นี้ฉันพบปัญหาในกระบวนการสร้างเว็บไซต์โดยใช้ Spring Boot: เมื่อลงทะเบียนผู้ใช้จะต้องอัปโหลดรูปโปรไฟล์ของเขาเอง หลังจากการลงทะเบียนที่ประสบความสำเร็จเขากระโดดไปที่ศูนย์ส่วนตัวและแสดงข้อมูลผู้ใช้ในศูนย์ส่วนตัว ฉันพบปัญหาเมื่อแสดงรูปโปรไฟล์: เมื่ออัปโหลดรูปภาพโปรไฟล์ฉันเก็บรูปโปรไฟล์ไว้ในโฟลเดอร์คงที่ภายใต้ไฟล์โครงการเก็บที่อยู่ในผู้ใช้ที่เกี่ยวข้องในฐานข้อมูลและเพิ่มการปรับใช้ที่ร้อนแรงในแนวคิด แต่หลังจากลงทะเบียนและกระโดดไปยังศูนย์ส่วนตัว เป็นไปได้ก็ต่อเมื่อโครงการเปิดตัวในครั้งต่อไปที่ฉันเข้าสู่ศูนย์ส่วนตัว
ฉันมีปัญหากับปัญหานี้เป็นเวลานานและในที่สุดก็แก้ไขได้เช่นนี้: ฉันสร้างโฟลเดอร์ WebApp ใหม่ในไดเรกทอรีหลักและกำหนดค่าเส้นทางของมัน ต่อไปนี้เป็นตัวอย่างเล็ก ๆ ของการแก้ปัญหา มันค่อนข้างง่ายที่จะทำโปรดยกโทษให้ฉัน ~~ รหัสหลักมีดังนี้:
อินเทอร์เฟซการลงทะเบียน:
<! doctype html> <html lang = "en" xmlns: th = "http://www.thymeleaf.org"> <head> <meta charset = "utf-8"/> <title> ชื่อเรื่อง </title> </head> enctype = "multipart/form-data"> <label> ชื่อ </label> <อินพุต type = "text" name = "name"/> <label> รหัสผ่าน </label> <อินพุตประเภท = "รหัสผ่าน" ชื่อ = "รหัสผ่าน"/> <lable> อัปโหลดรูปภาพ </label> <อินพุตประเภท = "ไฟล์" ไฟล์ "/>
การควบคุมมีดังนี้:
แพ็คเกจ com.example.demo.control; นำเข้า com.example.demo.dao.userrepository; นำเข้า com.example.demo.domain.user; นำเข้า org.springframework.beans.factory.annotation.autowired; org.springframework.ui.model; นำเข้า org.springframework.web.bind.annotation.getMapping; นำเข้า org.springframework.web.bind.annotation.postmapping; org.springframework.web.multipart.multipartfile; นำเข้า java.io.*;/*** สร้างโดย 18274 เมื่อปี 2017/8/9 */ @ControllerPublic Class Control {@autowired UserRepository UserRepository; @getMapping (value = "/zhuce") สตริงสาธารณะ zhuce () {return "zhuce"; } @postmapping (value = "/zhuce") สตริงสาธารณะ tijiao (@requestparam (value = "name") ชื่อสตริง, @requestparam (value = "รหัสผ่าน") รหัสผ่านสตริง, @requestparam (value = "ไฟล์") ไฟล์หลายไฟล์รุ่น) user.setUserName (ชื่อ); user.setPassword (รหัสผ่าน); if (! file.isempty ()) {ลอง {bufferedOutputStream out = new bufferedOutputStream (ใหม่ fileOutputStream (ไฟล์ใหม่ ("f: // ถ้วยธง // demo5 // src // main // webapp //"+ชื่อ+". jpg"); out.close (); ชื่อสตริง = "f: // flag cup // demo5 // src // main // webapp //"+name+". jpg"; E.GetMessage ();ศูนย์ส่วนตัว:
<! doctype html> <html lang = "en" xmlns: th = "http://www.thymeleaf.org"> <head> <meta charset = "utf-8"/> <title> th: text = "$ {user.username}"> </p> <p> รูปภาพ: </p> <img th: src = "@{$ {user.username}+'. jpg'}"/> </body>การกำหนดค่าเส้นทาง webapp
แพ็คเกจ com.example.demo.config; นำเข้า org.springframework.context.annotation.configuration; นำเข้า org.springframework.web.servlet.config.annotation.resourcehandlerregistry; * สร้างโดย 18274 เมื่อ 2017/8/9 */ @configurationPublic คลาส mywebappconfigurer ขยาย webmvcconfigureradapter {@Override โมฆะสาธารณะ addresourceHandlers (ResourceHandlerRegistry Registry) {registry.addresourceHandler ("/src/main/webapp/**") Super.addresourceHandlers (รีจิสทรี); -คลาสเอนทิตีผู้ใช้ที่สอดคล้องกัน:
แพ็คเกจ com.example.demo.domain; นำเข้า Javax.persistence.entity; นำเข้า Javax.persistence.generatedValue; นำเข้า Javax.persistence.id;/*** สร้างขึ้นโดยปี 18274 เมื่อปี 2017/8/9 */ @entitypublic class user {@id @GeneratedValue ส่วนตัว Long ID; ชื่อผู้ใช้สตริงส่วนตัว; รหัสผ่านสตริงส่วนตัว สตริงส่วนตัว tupian; // ที่อยู่ภาพผู้ใช้สาธารณะ () {} สาธารณะ Long getId () {return id; } สตริงสาธารณะ getUserName () {ส่งคืนชื่อผู้ใช้; } สตริงสาธารณะ getPassword () {ส่งคืนรหัสผ่าน; } สตริงสาธารณะ getTupian () {return tupian; } โมฆะสาธารณะ setId (Long id) {this.id = id; } โมฆะสาธารณะ setUserName (ชื่อผู้ใช้สตริง) {this.userName = ชื่อผู้ใช้; } โมฆะสาธารณะ setPassword (รหัสผ่านสตริง) {this.password = รหัสผ่าน; } โมฆะสาธารณะ settupian (สตริง tupian) {this.tupian = tupian; -อินเทอร์เฟซกับคลาสเอนทิตีของผู้ใช้:
แพ็คเกจ com.example.demo.dao; นำเข้า com.example.demo.domain.user; นำเข้า org.springframework.data.jpa.repository.jparepository;/*** สร้างขึ้นโดยปี 18274 เมื่อปี 2017/8/9 */อินเทอร์เฟซสาธารณะ userrepository ขยาย jparepository <user, long> {}ในที่สุดก็ทำงานดังนี้:
ลงทะเบียนเพื่ออัปโหลด Avatar:
ศูนย์ส่วนตัว:
PS: หากคุณรวมความปลอดภัยของฤดูใบไม้ผลิคุณจะต้องได้รับข้อมูลจาก session.spring_security_context.authentication.principal.xxx
แนบที่อยู่ของการสาธิตขนาดเล็กนี้อัปโหลด:
http://xiazai.vevb.com/201712/yuanma/demo5(vevb.com).rar
สรุป
ด้านบนเป็นบทสรุปของการใช้งานการใช้งานสปริงบูตอัพโหลดรูปภาพและแสดงบนหน้าและพบปัญหา ฉันหวังว่ามันจะเป็นประโยชน์กับทุกคน หากคุณมีคำถามใด ๆ โปรดฝากข้อความถึงฉันและบรรณาธิการจะตอบกลับทุกคนในเวลา ขอบคุณมากสำหรับการสนับสนุนเว็บไซต์ Wulin.com!