前台页面部分,这是我做的前端部分的一部分,用以实现文件上传,任何文件都可以添加上传,对应上传文件是否为图片,在后台部分判断。上传其他文件也可以使用本方法,只要改动后台的文件类型判断就行。
注:data-image=""用于展示要上传的图片
<form method="post" class="form-x" action="/solve/add" enctype="multipart/form-data"
<label>图片:</label>
<input type="file" name="img" style="width:25%; float:left;" value="" data-toggle="hover" data-place="right" data-image="" />
<button type="submit"> 提交</button>
</form>
后端接口部分,回调用我定义的图片上传类
ImgUpload iu=new ImgUpload();
@RequestMapping(value = "/add", method = RequestMethod.POST)
public String add(Model model, MultipartFile img, HttpServletRequest request){
SolveBean sb=new SolveBean();
path=request.getSession().getServletContext().getRealPath("/upload/solveImg/");//获取服务路径
String imgPath=iu.ImgPath(img,path);
if(imgPath!=null){
//准备将图片存储路径存入数据库,方便调用
sb.setImgpath(imgPath);
model.addAttribute("imgUpd","<script language='javascript'> alert('图片上传成功");
}else {
model.addAttribute("imgUpd","<script language='javascript'> alert('图片上传失败,上传图片必须为jpg,gif,png,ico,swf格式!')</script>");
}
int i=solveService.insertSelective(sb);
if(i==1){
model.addAttribute("ComeOut","<script language='javascript'> alert('添加成功')</script>");
}else {
model.addAttribute("ComeOut","<script language='javascript'> alert('添加失败')</script>");
}
return "admin/solve";
}
上传功能实现 ImgUpload类
我为了代码重复调用分成了好几个方法
private String filePath=null;
private String downNa;
private String imgName;
public String getImgName() {
return imgName;
}
public void setImgName(String imgName) {
this.imgName = imgName;
}
public String getDownNa() {
return downNa;
}
public void setDownNa(String downNa) {
this.downNa = downNa;
}
public String getFilePath() {
return filePath;
}
public void setFilePath(String filePath) {
this.filePath = filePath;
}
/**
* 图片开始上传
* @param file
* @param path
* @return
*/
public String ImgPath(MultipartFile file, String path){
String filePath1;
if(!file.isEmpty()){
//调用图片上传方法
filePath1=ImgLoad(file,path);
return filePath1;
}else {
return null;
}
}
/**
* 判断文件类型
* @param path
* @return
*/
public String ImgLoad(MultipartFile img, String path){
//图片名称
String ImgName=img.getOriginalFilename();
imgName=ImgName;
//保存的图片名称
int nameImg=ImgName.lastIndexOf(".");
String suffix=ImgName.substring(nameImg);
//判断是否为要求图片格式
if(suffix.toLowerCase().equals(".gif")||suffix.toLowerCase().equals(".jpg")||suffix.toLowerCase().equals(".png")||suffix.toLowerCase().equals(".ico")||
suffix.toLowerCase().equals(".swf")) {
keep(suffix,path,img);
return filePath;
}else {
return null;
}
}
这里替换字符串指定字符,也可以用
replaceAll()替换字符
/**
* 上传文件存入指定位置
* @param suffix
* @param path
* @param fi
*/
public void keep(String suffix, String path, MultipartFile fi){
String NewVidName = UUID.randomUUID() + suffix;
downNa=NewVidName;
filePath = path + NewVidName;
//文件上传位置
File file = new File(filePath);
if (!file.exists()) {
file.mkdirs();
}
try {
fi.transferTo(file);
} catch (IOException e) {
e.printStackTrace();
}
//将路径中的\转换为/为了在网页上展示
char[] ch=filePath.toCharArray();
int x=0;
for(int i=ch.length-1;i>=0;i--){
if(ch[i]=='\\'){
ch[i]='/';
x++;
if(x==3){
x=i;
break;
}
}
}
filePath="";
for(int i=0;i<ch.length;i++){
filePath+=String.valueOf(ch[i]);
}
filePath="../../.."+filePath.substring(x);
}
实体类部分,和其他的就不展示了
这样图片上传到服务器的功能就是想了