JavaWeb 文件上传和下载以及图片水印

 
/**
*哎呀~今天放假~所以昨天晚上就着实的放松了一把~所以总结就只有今天来写了~呵呵~
*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<fs.getCount();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){}
		
二,给图片加水印!
	说到给图片加水印~嘿嘿~大家都懂的~
	废话不多说了~上菜!
	<!--一下代码是写在Servlet中的-->
	//注意~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("[图片的路径和名称]"));
	*/
	//完毕!!!
<!--
Author:Lovingshu's Forever
Date:2011.09.18
Remark:The review of the Java Web Advance Chapter 7 File Upload and Download and How to make a waterMarked Image
-->

你可能感兴趣的:(jsp,servlet,String,File,upload,download)