/** *哎呀~今天放假~所以昨天晚上就着实的放松了一把~所以总结就只有今天来写了~呵呵~ *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 -->