文件上傳和下載及圖片水印製作

圖片水印製作步驟:

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);

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章