今天在写ssh框架中上传图片的代码,解决了一部分,然后卡在了图片上传之后的文件名不一致,就像随机取的。从我上传的jpg格式变成了tmp。
格式是不对了,但是文件内容并没有发生变化,说明文件是上传成功了。起初以为是编码问题,很多的有出现编码问题的地方都检查了一遍,没有发现任何的问题。
其实可以上传也可以看,总体来说,那些随机名字还帮你保证了不会有重复的出现,但是看起来十分的不舒服,查了很多资料都找不到对应的解释,真的烦人。
主要是没有报错,控制台就没怎么看了,然后自己尝试去在控制台打印点什么,才发现有两个错误。
Unexpected Exception caught setting 'uploadContentType' on 'class cn.wyu.bestHelp.web.action.yy.HospitalAction: Error setting expression 'uploadContentType' with value ['image/jpeg', ]
Unexpected Exception caught setting 'uploadFileName' on 'class cn.wyu.bestHelp.web.action.yy.HospitalAction: Error setting expression 'uploadFileName' with value ['XXX.jpg', ]
原来这个file上传需要三个参数的!!!真实的,完全就是粗心大意,那个upload可以随意的,那是定义file。
//属性驱动
private File upload;
private String uploadContentType;
private String uploadFileName;
public String getUploadFileName() {
return uploadFileName;
}
public void setUploadFileName(String uploadFileName) {
this.uploadFileName = uploadFileName;
}
public String getUploadContentType() {
return uploadContentType;
}
public void setUploadContentType(String uploadContentType) {
this.uploadContentType = uploadContentType;
}
public File getUpload() {
return upload;
}
public void setUpload(File upload) {
this.upload = upload;
}
if(upload != null)
{
// 将图片上传到服务器上.
// 获得上传图片的服务器端路径
//FileItem
String path = ServletActionContext.getServletContext().getRealPath(
"/images/hospital");
// 创建文件类型对象:
File diskFile = new File(path + "//" + uploadFileName);
// 文件上传:
FileUtils.copyFile(upload, diskFile);
yiyuan.setPicture("images/hospital/" + uploadFileName);
}
<tr>
<td>医院照片</td>
<td><input type="file" name="upload" /></td>
</tr>
<form id="hospitaForm" action="${pageContext.request.contextPath }/hospital_saveOrUpdate.action" method="post" enctype="multipart/form-data">