/**
*哎呀~今天放假~所以昨天晚上就着实的放松了一把~所以总结就只有今天来写了~呵呵~
*Title:The Review of Chapter7 File Upload and DownLoad and the WaterMarked Image
*
*/
一,图片的上传和下载
说在前面的话呢是在实现图片上传和下载需要导入一个包:SmartUpload.jar
导入过后呢才可以实例化SmartUpload这个类!
a)文件的上传(有两种方式:一个是写在JSP页面中,一个是写在Servlet中)
//得到上传对象
SmartUpload su=new SmartUpload();//这里需要导入前面提到的那个包
//实例化
su.initialize([pageContext]);
/**注意了:pageContext在JSP页面和在servlet中的获取方式不同!
*在JSP页面中,pageContext作为内置对象,直接使用即可
*如果在Servlet中,起获取方式就有点DT了~
*JspFactory.getDefaultFactory().getPageContext(this,request,response,null,true,[长度(8192)],true);
*/
try{
//开始上传工作
su.upload();
//为了更好的上传文件,所以直接使用su.save()的方法比较少,都是用的一下的方法
//获取上传的文件(需要导入包import com.jspsmart.upload.Files;)
Files fs=su.getFiles();
for(int i=0;i
//此File非IO得File(需要导入包import com.jspsmart.upload.File);
File f=fs.getFile(i);
//判断是否是空文件
if(!isMissing()){
//在给文件命名时,为了防止多个文件同名导致覆盖,所以这里采用了这个方法
String newName=System.currentTimeMillis()+f.getFileName();
f.saveAs("[文件上传的目标目录(支持相对路径"/"表示"WebRoot/")]"+newName);
}
}
}catch(SmartUploadException e){}
b)文件的下载(也是有两种方式:JSP中和Servlet中,我相信还可以在类中)
try{
//得到对象
SmartUpload su=new SmartUpload();
//初始化
su.initialize([pageContext,得到的方法同上]);
//强制浏览器不进行文件解析
su.setContentDisposition(null);
//下载之前需要对文件路径进行解码处理
String fileName=new String("[文件名]".getBytes("ISO-8859-1"),"GBK");
//开始上传
su.uploadFile("[文件的路径(支持相对路径)]"+fileName);
//上传完毕后~最最重要的一点不能忘记了~~十分的重要!!!要重写out对象(在JSP中)
out.clear();
out=pageContext.pushBody();
//文件上传完毕了!!
}catch(SmartUploadException e){}
二,给图片加水印!
说到给图片加水印~嘿嘿~大家都懂的~
废话不多说了~上菜!
//注意~response.setContentType("image/png(jpg...)")
//先用ImageIcon来装载图片(装载图片的还有toolkit)
ImageIcon icon=new ImageIcon("[图片路径]");
/*注意了,上面的图片路径可是很有讲究的~
*1)使用request.getSession().getPageContext().getRealPath("/")来获取WebRoot的目录
*2)然后再在后面加上WebRoot目录下的用来存放图片的目录
*/
//创建BufferedImage把图片读入内存
BufferedImage bff=new BufferedImage(icon.getImageWidth,icon.getImageHeight,BufferedImage.[随便点一个即可]);
//得到画笔,得到缓存图的画笔
Graphics g=bff.getGraphics();
//开始咯~开始画咯,首先画出主图
g.drawImage(icon.getImage,0,0,null);
//然后在打上标记^_^
g.drawString("Lovingshu's Forever",10,10);
//当然,这里不只仅仅局限于写文字,Graphices提供了很多方法,呵呵~发挥你的想象力吧!
//写完了可不要忘记释放画笔哦
g.dispose();
//在输出之前不能忘记设置内容的形式哦
response.setContentType("image/png");
//然后用ImageIO将其输出
ImageIO.write(bff,"png(jpg,...)",response.getOutPutStream());
/*
*当然,如果你不想输出,而是想把图片存到硬盘上,那么最后一句就要这样写了:
*ImageIO.write(bff,"[图片格式]",new File("[图片的路径和名称]"));
*/
//完毕!!!