최근 Spring Boot를 사용하여 웹 사이트를 구축하는 과정에서 문제가 발생했습니다. 등록 할 때 사용자는 자신의 프로필 사진을 업로드해야합니다. 성공적인 등록 후, 그는 개인 센터로 뛰어 들어 개인 센터에 사용자 정보를 표시했습니다. 프로필 사진을 표시 할 때 문제가 발생했습니다. 프로파일 사진을 업로드 할 때 프로젝트 파일의 정적 폴더에 프로필 사진을 저장하고 데이터베이스의 해당 사용자에 주소를 저장하고 아이디어에 핫 배포를 추가했지만 개인 센터로 등록하고 점프 한 후에도 프로필 사진을 표시 할 수 없습니다. 다음에 개인 센터에 들어갈 때 프로젝트가 시작될 때만 가능합니다.
이 문제에 오랫동안 어려움을 겪었고 마침내 다음과 같이 해결했습니다. 기본 디렉토리에 새로운 WebApp 폴더를 만들고 경로를 구성했습니다. 다음은 솔루션의 작은 데모입니다. 비교적 간단합니다. 용서 해주세요 ~~ 핵심 코드는 다음과 같습니다.
등록 인터페이스 :
<! docType html> <html lang = "en"xmlns : th = "http://www.thymeleaf.org"> <head> <meta charset = "utf-8"/> <title> title </title> </head> <body> <양식 행동 = "/zhuce"@{jyme = "" "" "" "" ""/zhuce} "" " EncType = "multipart/form-data"> <label> name </label> <입력 유형 = "text"name = "name"/> <label> password </label> <입력 유형 = "password"name = "password"/> <label> 그림 업로드 </label> <input type = "file"name = "file"/> <input type = "value ="upload "/> comp/> comp.제어는 다음과 같습니다.
package com.example.demo.control; import com.example.demo.dao.userrepository; import com.example.demo.user; import org.springframework.bean.beans.annotation.autowired; import org.springframework.stereotyp.controller; import org.spramepramework.ui.ui.ui org.springframework.web.bind.annotation.getmapping; import org.springframework.web.bind.annotation.postmapping; import org.springframework.web.bind.annotation.requestparam; import org.springframework.web.multipartfile* java.io*; 18274 2017/8/9. */ @ControlLerPublic 클래스 컨트롤 {@autowired userrepository userrepository; @getMapping (value = "/zhuce") public String zhuce () {return "zhuce"; } @postmapping (value = "/zhuce") public string tijiao (@requestparam (value = "name") 문자열 이름, @requestparam (vale = "password") 문자열 암호, @requestparam (value = "file") multipartfile 파일, moder user = new user (); user.setusername (이름); user.setpassword (비밀번호); if (! file.isempty ()) {try {bufferedOutputStream out = new bufferedOutputStream (new FileOutputStream ( "f : // flag cup // demo5 // src // main //"+name+". jpg"); // 디렉토리 out에 그림을 저장합니다. out. } catch (ioexception e) {e.printstacktrace ();개인 센터 :
<! docType html> <html lang = "en"xmlns : th = "http://www.thymeleaf.org"> <head> <meta charset = "utf-8"/> <title> 제목 </title> </head> <body> <p> username : </p> <p th : text = "$ {user.username}"> </p> <p> 사진 : </p> <img th : src = "@{user.username}+'. jpg'}"/> </body> </html>WebApp 경로 구성
package com.example.demo.config; import org.springframework.context.annotation.configuration; import org.springframework.web.servlet.config.annotation.resourcehandlerregistry; import org.spramework.web.servlet.config.annotation 18274 2017/8/9. */ @configurationPublic Class MyWebAppConfigurer 확장 webmvcconfigureradapter {@override public void addresourceHandlers (resourceHandlerRegistry registry) {registry.addresourceHandler ( "/src/main/webapp/**"). super.addresourcehandlers (레지스트리); }}해당 사용자 엔티티 클래스 :
package com.example.demo.domain; import javax.persistence.entity; import javax.persistence.generatevalue; import javax.persistence.id;/*** 2017/8/9에 생성되었습니다. */ @EntityPublic 클래스 사용자 {@id @generatedValue Private Long ID; 개인 문자열 사용자 이름; 개인 문자열 비밀번호; 개인 문자열 tupian; // 이미지 주소 public user () {} public long getId () {return id; } public String getUserName () {return username; } public String getPassword () {return password; } public String getTupian () {return tupian; } public void setId (long id) {this.id = id; } public void setusername (String username) {this.username = username; } public void setpassword (문자열 비밀번호) {this.password = password; } public void settupian (String Tupian) {this.tupian = Tupian; }}사용자 엔티티 클래스에 대한 인터페이스 :
package com.example.demo.dao; import com.example.demo.domain.user; import org.springframework.data.jpa.jpa.jparepository;/*** 2017/8/9에 생성되었습니다. */public interface userreepository 확장 jparepository <user, long> {}마지막으로 다음과 같이 실행됩니다.
아바타 업로드 등록 :
개인 센터 :
PS : Spring Security를 결합하는 경우 Session.Spring_Security_Context.authentication.principal.xxx에서 정보를 얻면됩니다.
업로드 된이 작은 데모의 주소를 첨부하십시오.
http://xiazai.vevb.com/201712/yuanma/demo5(Vevb.com).rar
요약
위의 것은 스프링 부팅 구현이 사진을 업로드하고 페이지에 표시하고 문제가 발생하는 것입니다. 모든 사람에게 도움이되기를 바랍니다. 궁금한 점이 있으면 메시지를 남겨 주시면 편집자가 제 시간에 모든 사람에게 답장을 드리겠습니다. Wulin.com 웹 사이트를 지원해 주셔서 대단히 감사합니다!