文件上传和下载及图片水印制作

图片水印制作步骤:

1.创建ImageIcon对象,加载图片

2.创建虚拟画布BufferImage

3.获取画笔getGraphoics()

4.绘制图片

5.如何是相应在服务器端则必须设置响应格式 response.setContextType("image/png") 默认为("text/html") 其作用是提示浏览器返回的是一张图片

6.使用ImagIo.write() 输出

图片水印制作代码实例:

//a. 创建ImageIcon对象
  ImageIcon icon = new ImageIcon(super.getServletContext().getRealPath("/")+"uploadFiles\\Azul.jpg");//参数为图片全路径
  
  //b. 创建虚拟画布
  BufferedImage bimg = new BufferedImage(icon.getIconWidth(), icon.getIconHeight(), BufferedImage.TYPE_3BYTE_BGR);  参数 1 得到图片的宽度  2 图片高度  3画布的参数(通常用这个)
  
  //c. 获取画笔
  Graphics g = bimg.getGraphics();
  
  //d.绘制图形
  g.drawImage(icon.getImage(), 0, 0, null);参数 1图片 2、3 开始绘制图片的初始位置 4 是否改变图片形状 null 为不改变
  
//  g.setFont(new Font("楷体", Font.BOLD, 20));//设置字体样式 大小
//  g.setColor(Color.RED);//字体颜色
  
  g.drawString("版权归XXXX所有,翻版必究!!!", 10, 20); //水印的字符串绘制在图片上的 x y 位置
  g.drawString("http://www.baidu.com", 10, 40);
  
  g.dispose();// 销毁画笔
  
  //e. 设置相应的格式
  response.setContentType("image/png");
  
  //f. 输出文件
  ImageIO.write(bimg, "jpg", response.getOutputStream());   //画布  图片格式  输出流

如果需要把图片输出则最后一步:

ImageIO.write(bimg, "jpg", new FileoutputStream(new file("输出路径"))); //画布 图片格式 输出图片保存路径

文件的上传和下载

上传步骤:

1.修改表单的参数 method="post" enctype="multtipart/form-data" (复杂的表单数据)

2.导入jspSmartUpload.jar 组建

3.上传文件:

a.创建上传对象

b.上传对象初始化

c.调用upload 上传

d.调用save保存文件

代码实例:

//上传文件 jsp中
     SmartUpload smart = new SmartUpload();
     
     //初始化
     smart.initialize(pageContext);
     
     //调用upload()开始上传
     smart.upload();
     
     //保存文件
     //int count = smart.save("/uploadFiles");//保存的路径
     
     //out.println("上传文件的个数:"+count);
     
     //显示上传文件的信息?Files,File
     Files fs = smart.getFiles();//得到上传的所有文件
     for(int i=0;i<fs.getCount();i++){
      
      File f = fs.getFile(i);
      
      if(!f.isMissing()){ //如果选中了并上传了  isMissing 没有选中上传
      
       String newfileName = System.currentTimeMillis()+f.getFileName();//为防止上传的文件重名
       
    f.saveAs("/uploadFiles/"+newfileName);//文件的另存
               
       out.println("文件名:"+ f.getFileName()+"<br />");
       out.println("文件路径:"+ f.getFilePathName()+"<br />");
       out.println("文件大小:"+ f.getSize()+"<br />");
       out.println("后缀名:"+ f.getFileExt()+"<br /><hr />");      
      }            
     } 

文件下载步骤:

注意:由于使用下载组建、必须修正out对象,才能正确下载

1.创建smartUpload 对象

2.初始化 smart.initialie(super.getServlertConfg(),request,response);

3.设置强制下载(为了避免浏览器能解析的文件被浏览器解析了而不能点击下载)

setContent.DisPosition(null);

4.下载文件

a.解决中文乱码

1.得到要下载文件的文件名(下载页面传递)

2.get传单中文

文件名=new String (文件名.getBytes("iso-8859-1"),"gbk");

downloadFile("文件路径");

代码实例:jsp

 //获取webroot目录下的文件夹
     File f = new File(application.getRealPath("/")+"uploadFiles");     
     //out.println(f.getAbsolutePath());
     File[] rs = f.listFiles();
     
     //如果浏览器能够解析的,直接打开;否则,提示下载
     
     for(int i=0;i<rs.length;i++){
      File cf = rs[i];
      //out.println("<a href='uploadFiles/"+cf.getName()+"'>"+cf.getName()+"</a><br />");
      
      out.println("<a href='download.jsp?fname="+cf.getName()+"'>"+cf.getName()+"</a><br />");
     }

 

//注意,特别注意,一定要注意;由于使用了下载组件,必须修正out对象,才能正确下载文件
  out.clear();
  out = pageContext.pushBody();
     
     //创建对象
     SmartUpload smart = new SmartUpload();
     
     //初始化
     smart.initialize(pageContext);
     
     //设置强制下载文件(而不是解析文件)
     smart.setContentDisposition(null);
     
     String fname = request.getParameter("fname");
     
     //get传递中文
     fname = new String(fname.getBytes("iso-8859-1"),"gbk");
     
     //下载文件
     smart.downloadFile("/uploadFiles/"+fname);

 

 

 

 

本文出自 “涓涓细流” 博客,谢绝转载!

你可能感兴趣的:(职场,休闲,文件的上传和下载及图片水印制作)