java方法中的参数必须是BufferedImage,InputStream,FileTransfer三种中其中一个,

一般推荐使用FileTransfer,可以获取文件名、文件大小、和内置的inputStream。

后台实现文件上传方法

 
  
  1. public String fileUploadForDwr(ArrayList<FileTransfer> fileTransfer) {  
  2.  
  3.         String tmp = "error";  
  4.  
  5.         String fileName = ""// 文件名  
  6.  
  7.         String newFileName = ""// 新文件名  
  8.  
  9.         InputStream streamIn = null;  
  10.  
  11.         OutputStream streamOut = null;  
  12.           
  13.         long size = 1024 * 1024 * 5;   
  14.           
  15.         if(fileTransfer.size() > size){  
  16.               
  17.             return "文件不得大于5M";  
  18.               
  19.         }  
  20.  
  21.         WebContext webContext = WebContextFactory.get();  
  22.         String saveurl = webContext.getHttpServletRequest().getSession()  
  23.                 .getServletContext().getRealPath("/upload");  
  24.         for (FileTransfer obj : fileTransfer) {  
  25.             if (obj.getFilename() != null && !obj.getFilename().equals("")) {  
  26.                 fileName = obj.getFilename();  
  27.                 if (fileName.lastIndexOf("\\") > -1) {  
  28.                     fileName = fileName  
  29.                             .substring(fileName.lastIndexOf("\\") + 1);  
  30.                 }  
  31.                 System.out.println(fileName);  
  32.                 newFileName = CTools.createID()  
  33.                         + fileName.substring(fileName.indexOf("."));  
  34.                 try {  
  35.  
  36.                     streamIn = obj.getInputStream();  
  37.                     streamOut = new FileOutputStream(new File(saveurl,  
  38.                             newFileName));  
  39.                     int bytesRead = 0;  
  40.                     byte[] buffer = new byte[81920];  
  41.                     while ((bytesRead = streamIn.read(buffer, 081920)) != -1) {  
  42.                         streamOut.write(buffer, 0, bytesRead);  
  43.                     }  
  44.                     streamOut.close();  
  45.                     streamIn.close();  
  46.                     tmp="success";  
  47.                 } catch (FileNotFoundException ex) {  
  48.  
  49.                 } catch (IOException e) {  
  50.                     // TODO: handle exception  
  51.                 } finally {  
  52.  
  53.                     streamIn = null;  
  54.                     streamOut = null;  
  55.                 }  
  56.  
  57.             }  
  58.         }  
  59.         return tmp;  
  60.     } 

 

前台调用页面:

 

 
  
  1. <%@ page language="java" import="java.util.*" pageEncoding="GBK"%> 
  2.  
  3. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 
  4. <html> 
  5.     <head> 
  6.  
  7.         <title>dwr3 文件上传</title> 
  8.  
  9.         <meta http-equiv="pragma" content="no-cache"> 
  10.         <meta http-equiv="cache-control" content="no-cache"> 
  11.         <meta http-equiv="expires" content="0"> 
  12.         <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> 
  13.         <meta http-equiv="description" content="This is my page"> 
  14.           
  15.         <script type="text/javascript" src="/dwr/engine.js"></script> 
  16.         <script type="text/javascript" src="/dwr/util.js"></script> 
  17.         <script type="text/javascript" src="/dwr/interface/dwrFileUtil.js"></script> 
  18.           
  19.         <script type="text/javascript"> 
  20.            function uploadFile(){  
  21.              var file=dwr.util.getValue("attach");  
  22.              var str="123" 
  23.              var fileArr =  new Array();//注意这里是用的集合,无论一个附件还是多个附件都可以了  
  24.              fileArr[0] = file;  
  25.              dwrFileUtil.fileUploadForDwr(fileArr,{callback:function (data){back(str,data)}});  
  26.            }  
  27.              
  28.            function back(tmp,data){  
  29.              alert(3);  
  30.              alert(tmp+""+data);  
  31.                
  32.            }  
  33.         </script> 
  34.     </head> 
  35.  
  36.     <body> 
  37.         <input type="file" name="attach"> 
  38.         <br /> 
  39.         <input type="button" name="btnSub" onclick="uploadFile()" value="文件上传"> 
  40.     </body> 
  41. </html>