1.前端
<form action="uploadImage" method="post" enctype="multipart/form-data">
选择图片:<input type="file" name="image" accept="image/*" /> <br> //这个红色image后面是用到的
<input type="submit" value="上传">
</form>
enctype/form-data表示表单数据有多部分组成,既有文本数据,又有文件等二进制数据的意思
accept="image/*" 表示只能选择图片进行上传
2.最关键的那个类
public class ImageLoader()
{
MultipartFile image;
public MultipartFile getImage() {
return image;
}
public void setImage(MultipartFile image) {
this.image = image;
}
}
//注意这里的image要和前面那个jsp里的那个标红的image一样
3.就是Controller类来进行操作了
@Controller
@RequestMapping("")
public class xxController()
{
@RequestMapping
public String getImage(Category c,HttpServletRequest request
,ImageLoader imageLoader)
{
categoryService.add(c);//有了这个语句下面才能直接获得id。。参考博客Mybatis中的<insert >里面的参数
File file =new File(session.getServletContext().getRealPath("img/category"),c.getId()+
".jpg"
);
if(!file.getParentFile().exists()) //file.getParentFile()返回的是这个路径
session.getServletContext().getRealPath("img/category")
file.getParentFile().mkdirs();//创建这个路径
session.getServletContext().getRealPath("img/category")
imageLoader.getImage().transferTo(file);//上传图片到这一步其实已经结束了,getImage()是imageLoader这个类的方法
BufferedImage img = ImageUtil.change2jpg(file);
ImageIO.write(img,
"jpg"
, file);
//要这两句联合起来看,他们表示把上传的图片强制转换为.jpg格式
}
}
//注意这里方法里穿过来的ImageLoader对象在无声无息之间已经接收到了从jsp传过来的image文件,因为jsp中的name=image和这个对象里面的参数的名字是一样的