spring boot框架 上传图片,并地址保存到数据库中 适合新手
上传图片的业务
我在做毕业项目时涉及到了上传图片的业务,之前没有做过这方面的案例。所以走了很多的弯路,我现在希代码发出来希望这对刚接触代码的萌新们帮助!!!
转发说明出处
java
@RequestMapping("/imgStr")
public void ImgStr( MultipartFile file, Auser auser)throws IOException {
//我们简单验证一下file文件是否为空
if (file.equals("")){return;}
Date date = new Date();
//获取当前系统时间年月这里获取到月如果要精确到日修改("yyyy-MM-dd")
String dateForm = new SimpleDateFormat("yyyy-MM").format(date);
//地址合并 path.getFileimg 是存放在实体类的路径 不会写得同学可以直接写 "D:\\img" 这文件要手动创建
String casePath = path.getFileimg()+dateForm;
//获取图片后缀
String imgFormat = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf("."));
//这里我们加入了验证图片类型 这需要自己手动写 声明点这只是非常简单的验证
//删除不影响程序运行
/***************************************************/
ImgRegulation regulation = new ImgRegulation();
try{ boolean ifimg = regulation.VERIFY(imgFormat);
if (false==ifimg){ return; }
}catch (Exception e){ return; }
/****************************************************/
//判断文件是否存在
/*************************************************/
File f = new File(casePath);
try {if (!f.exists()){f.mkdirs();}
}catch (Exception e){ return; }
/*************************************************/
//给图片重新随机生成名字
String name= UUID.randomUUID().toString()+imgFormat;
//保存图片
file.transferTo(new File(casePath+"\\"+name));
//拼接要保存在数据中的图片地址
//path.getUREIMG() 同样也是存放在实体类的字段 可以直接写 http://localhost:8080/
//dateForm 这是动态的文件夹所以要和地址一起存入数据库中
//auser 为@RequestMapping("/auser")
String urlImg = path.getUREIMG()+"auser/show?fileUrl="+dateForm+"/"+name;
//放入对应的字段中
auser.setUserimg(urlImg);
//上传数据库
service.updateimg(auser);
}
验证图片后缀
注意:这种验证图片安全性并不高,只能适用于练手。
java
public class ImgRegulation {
public boolean VERIFY(String imgverify){
//可以随意添加图片类型 无需改代码
String[] imgformat = {".jpg",".png",".jpeg",".pjg",".pjeg",".jfif"};
for(String img:imgformat){
if(img.equals(imgverify)){
return true;
}
}
return false;
}
}
存放在实例类的地址与字段
这里省略了GET与SET.说明这样做法并没有提升代码的安全性只是为了装B!!!
java
public class Fileaddress {
private String fileimg = "D:\\Code\\IDEA\\itgpshool\\gpit\\src\\main\\resources\\img\\";
private String UREIMG = "http://localhost:8080/";
}
有两种上传方式
一、使用Ajax方法提交
javascript
function butupdateimg(userid){
if (!$("#img-input").val()){return false; }
let formData = new FormData($("#postForm")[0]);
formData.append("userid",userid);
$.ajax({
url:"http://localhost:8080/auser/imgStr",
data:formData,
type:"post",
cache: false,
processData: false,
contentType: false,
success:function(data) {
toastr.success("上传成功!")
},
error:function (errorThrown) {
toastr.error("上传失败!")
}
})
html
<form id=postForm>
<input type="file" class="thumbBox" name="file" id="file" accept="image/jpeg,image/png" />
<input type="text" name="userid" />
<input type="button" onclick="butupdateimg()" value="提交"/>
</form>
二、直接用<form>标签上传
html
<form action="/auser/imgStr" method="post" enctype="multipart/form-data">
<input type="file" class="thumbBox" name="file" id="file" accept="image/jpeg,image/png" />
<input type="text" name="userid" />
<input type="submit" value="提交"/>
</form>