欢迎来到林龙星的博客

返回顶部

springboot上传图片文件相关知识

这个作业属于哪个课程 2021春软件工程实践|W班(福州大学)
这个作业要求在哪里 软件工程实践总结&个人技术博客
作业正文 分享技术相关的知识
其他参考文献 ...

技术概述

在开发spring boot后端项目时,后端需要接收前端传来的图片文件,并且将其存储到服务器上,而且将相应的路径存储到数据库中方便能查找到该图片文件。学习该技术是因为我们在开发团队项目时要实现修改用户头像这一功能,这一技术难点就在于在如何接收图片文件以及接收之后将其存储到服务器的文件夹下,路径是否正确,文件是否可索引到。

技术详述

1.在controller中的函数的参数中加@RequestParam("avatar") MultipartFile image,即可接收来自前端传来的图片文件.

@RequestMapping(value = "/uploadPic", method = RequestMethod.POST)
public JSONObject getSubscription(@RequestParam("avatar") MultipartFile image){    
        PictureUrlUtil.writePicture(image,headPicPath,headPath);
		modifyInfoDao.setHeadPic(userId,headPicPath);
}

2.编写一个writePicture函数来将接收到的图片存储到服务器上,传入的fileName为文件存储在服务器后的文件名,fileFolderName为服务器上文件夹的名称。

public static void writePicture(MultipartFile file,String fileName,String fileFolderName){
    try{
        FileOutputStream picOutput = new FileOutputStream("/outfits/" + fileFolderName + "/" + fileName);   			//设置文件路径
        picOutput.write(file.getBytes());   //获取字节流直接写入到磁盘内
        picOutput.close();
    }
    catch (Exception e){
    }
}

3.最后利用Dao层的函数来将图片路径存储到相应用户的数据库中。setHeadPic中传入的user_pic_path即存储在服务器上的图片的路径。

public interface ModifyInfoDao {  
@Update("UPDATE user set user_pic_path = #{user_pic_path} where user.id = #{user_id}")
void setHeadPic(int user_id,String user_pic_path);
}

经过以上步骤,我们就可以向服务器上上传一张图片文件。

技术使用过程中遇到的问题以及解决过程

上传图片文件到服务器过程中,由于服务器是Linux系统,与我们平时使用的Windows系统不同,Linux文件路径与Windows有较大的差异,比如上传图片文件writePicture()函数中的FileOutputStream picOutput = new FileOutputStream("/outfits/" + fileFolderName + "/" + fileName);这个语句中文件名与文件路径之间要用"/"来隔开,而不是Windows中的"\"。这一点要注意,否则服务器上的文件就无法索引到。

技术总结

spring boot中上传图片文件虽然步骤没有非常复杂,但是也有一些小细节,如果没处理好这些小细节,那么就会造成严重后果。通过学习这一相关知识,让我对spring boot相关的库函数了解更多。虽然经过了几次作业我学习了一些spring boot的基础知识,但是这还远远不够。要继续学习更多spring boot的高级知识来充实自己,这样以后毕业从事相关工作时可以减少学习的时间成本。

posted @ 2021-06-27 23:50  221801239_林龙星  阅读(269)  评论(0编辑  收藏  举报