spring boot实现上传图片并在页面上显示及遇到的问题小结

网友投稿 429 2023-03-08


spring boot实现上传图片并在页面上显示及遇到的问题小结

最近在使用spring boot搭建网站的过程之中遇到了这样一个问题:用户注册时需要上传一个属于自己的头像,注册成功之后跳转到个人中心,在个人中心中显示用户信息.其中在显示头像的时候遇到了问题:上传头像的时候,我把头像存放到了项目文件下的static文件夹中,将其地址存放到了数据库对应的用户中,并且在idea中添加了热部署,但是在注册跳转到个人中心后还是无法显示头像,只有在下一次启动项目进入到个人中心时才可以。

被这个问题困扰了许久,最后是这样的解决的:在main目录下新建了一个webapp文件夹,并且对其路径进行了配置。下面是一个解决方案的小demo,做的比较简单,请见谅~~核心代码如下:

注册界面:

control如下:

package com.example.demo.control;

import com.example.demo.dao.UserRepository;

import com.example.demo.domain.User;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.stereotype.Controller;

import org.springframework.ui.Model;

import org.springframework.web.bind.annotation.GetMapping;

import org.springframework.web.bind.annotation.PostMapping;

import org.springframework.web.bind.annotation.RequestParam;

import org.springframework.web.multipart.MultipartFile;

import java.io.*;

/**

* Created by 18274 on 2017/8/9.

*/

@Controller

public class Control {

@Autowired

UserRepository userRepository;

@GetMapping(value="/zhuce")

public String zhuce(){

return "zhuce";

}

@PostMapping(value="/zhuce")

public String tijiao(@RequestParam(value="name") String name,

@RequestParam(value="password") String password,

@RequestParam(value="file")MultipartFile file,

Model model) {

User user = new User();

user.setUsername(name);

user.setPassword(password);

if (!file.isEmpty()) {

try {

BufferedOutputStream out = new BufferedOutputStream(

new FileOutputStream(new File("f:\\旗杯\\demo5\\src\\main\\webapp\\"+name+".jpg")));//保存图片到目录下

out.write(file.getBytes());

out.flush();

out.close();

String filename="f:\\旗杯\\demo5\\src\\main\\webapp\\"+name+".jpg";

user.setTupian(filename);

userRepository.save(user);//增加用户

} catch (FileNotFoundException e) {

e.printStackTrace();

return "上传失败," + e.getMessage();

} catch (IOException e) {

e.printStackTrace();

return "上传失败," + e.getMessage();

}

model.addAttribute(user);

return "permanager";

} else {

return "上传失败,因为文件是空的.";

}

}

}

个人中心:

用户名:

图片:

对webapp路径的配置

package com.example.demo.config;

import org.springframework.context.annotation.Configuration;

import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;

import org.springframework.web.servlet.config.annotation.WebMvcConfigurerANqLopUvHdapter;

/**

* Created by 18274 on 2017/8/9.

*/

@Configuration

public class MyWebAppConfigurer extends WebMvcConfigurerAdapter{

@Override

public void addResourceHandlers(ResourceHandlerRegistry registry) {

registry.addResourceHandler("/src/main/webapp/**").addResourceLocations("classpath:/webapp/");

super.addResourceHandlers(registry);

}

}

对应的用户实体类:

package com.example.demo.domain;

import javax.persistence.Entity;

import javax.persistence.GeneratedValue;

import javax.persistence.Id;

/**

* Created by 18274 on 2017/8/9.

http:// */

@Entity

public class User {

@Id

@GeneratedValue

private Long id;

private String username;

private String password;

private String 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(String password) {

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.repository.JpaRepository;

/**

* Created by 18274 on 2017/8/9.

*/

public interface UserRepository extends JpaRepository{

}

最后运行如下:

注册上传头像:

个人中心:

ps:如果在结合spring security的话,只需要从session.SPRING_SECURITY_CONTEXT.authentication.principal.XXX中取得信息即可。

附上传的这个小demo的地址:

http://xiazai.jb51.net/201712/yuanma/demo5(jb51.net).rar

总结

以上所述是给大家介绍的spring boot实现上传图片并在页面上显示及遇到的问题小结,希望对大家有所帮助,如果大家有任何疑问请给我留言,会及时回复大家的。在此也非常感谢大家对我们网站的支持!


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:java8 集合求差集、并集、交集的实例
下一篇:java的NIO管道用法代码分享
相关文章

 发表评论

暂时没有评论,来抢沙发吧~