SSH框架之上传图片到项目文件夹下并在前端显示
1.前端jsp页面上传代码
<form action="sendMessage.action" method="post" enctype="multipart/form-data">
<label>类别</label>
<select name="category">
<option value="1">书籍</option>
<option value="2">服饰</option>
<option value="3">证件</option>
<option value="4">其他</option>
</select><br>
<label>描述</label>
<input type="text" name="content"><br>
<label>图片</label>
<input type="file" name="upload"><br>
<input type="submit" value="发布">
</form>
2.后台action将上传的图片保存,将保存的图片路径存入数据库
public String send() {
//保存图片,返回路径
String path=messageService.savePhoto(upload);
User user=(User) ActionContext.getContext().getSession().get("user");
Message message=new Message();
message.setMessageUserid(user.getUserId()+"");
message.setMessagePhoto("images/"+path);
message.setMessageCategotyid(1);
message.setMessageDescription(content);
message.setMessageDate(new Date());
//存入数据库
messageService.saveMessage(message);
return "success";
}
3.保存图片的方法
public String savePhoto(File upload) {
// TODO Auto-generated method stub
//生成随机字符串
String sources="2549hgtflkjadsf89nbvcMNBVCxZwe5989iuytFFJHGfDASwERtrty";
Random random=new Random();
StringBuilder stringBuilder=new StringBuilder();
for(int i=0;i<5;i++) {
stringBuilder.append(sources.charAt(random.nextInt(sources.length()))+"");
}
String str=stringBuilder.toString();
String path="D:\\JavaWeb\\eclipse\\workspace\\lostandfoundSSH3\\WebContent\\images\\"+str+".jpg";
//2.保存照片
File file=new File(path);
if(!file.exists()){
try {
file.createNewFile();
} catch (IOException e) {
e.printStackTrace();
return "0";
}
}
if(upload==null) {
System.out.println("upload is null");
}
if(!file.exists()) {
System.out.println("file is null");
}
try{
FileUtils.copyFile(upload,file);
}catch (IOException e){
e.printStackTrace();
return "0";
}
return str+".jpg";
}
4.通过查询数据库获取图片路径,将路径传给前端,显示图片
<c:forEach var="post" items="${postList}">
<div>
<img class="avatar" alt="头像" src="images/myLove.jpg">
<label><c:out value="${post.getUser().getUserName()}" /></label><br>
</div>
<div class="content">
<a href="#"><c:out value="${post.getMessageDescription()}" /></a>
</div>
<div>
<img class="content-img" alt="img-content" src="${ post.getMessagePhoto()}">
</div>
<div >
<a href="#"><img class="comment-img" alt="comment" src="images/comment.png"></a>
</div>
<div class="date">
<c:out value="${post.getMessageDate()}" /><br>
</div>
<div class="div"></div>
</c:forEach>
5.因为图片存储在项目文件下,当上传图片成功后,即使刷新页面前端也不能显示图片,需要刷新一下项目文件,再次刷新web页面才能显示图片