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

本文介绍了如何在JavaWeb中实现图片的上传和下载,使用SmartUpload.jar包,通过JSP和Servlet两种方式进行操作。同时,文章还讲解了如何给图片添加水印,包括设置响应类型、加载图片、创建BufferedImage、使用Graphics进行绘制等步骤。
摘要由CSDN通过智能技术生成

/**

*哎呀~今天放假~所以昨天晚上就着实的放松了一把~所以总结就只有今天来写了~呵呵~

*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("[图片的路径和名称]"));

*/

//完毕!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值