2012-02-05 44 views
0

我做了Ajax請求如下無法使用Apache文件上傳在斯特1.1

**function uploadFiles(url, files) { 
alert("sss"); 
    var formData = new FormData(); 
    for (var i = 0, file; file = files[i]; ++i) { 
    alert("v"+file.name); 
    formData.append("file", file); 
    } 
    var xhr = new XMLHttpRequest(); 
    xhr.open('POST', url, true); 
    xhr.onload = function(e) {alert("'ddd111000") }; 
    xhr.send(formData); // multipart/form-data 
}** 

其發送文件到服務器,但讀取文件時,我試圖讀取它,它的要求和文件中使用Apache文件上傳支柱1.1。它返回空FileItem對象的清單。請幫我關於以下是我寫的服務器端代碼

// Create a factory for disk-based file items 
        DiskFileItemFactory factory = new DiskFileItemFactory(); 

       factory.setSizeThreshold(5000 * 1024); 


       // Location to save data that is larger than maxMemSize. 
       factory.setRepository(new File("G:\\Project\\")); 

       // Create a new file upload handler 
       ServletFileUpload upload = new ServletFileUpload(factory); 


       // maximum file size to be uploaded. 
       upload.setSizeMax(5000 * 1024); 




       // Set factory constraints 

       // Create a new file upload handler 
       //ServletFileUpload upload = new ServletFileUpload(factory); 


      // ServletFileUpload upload = new ServletFileUpload(); 
      // upload.getItemIterator(request); 
       List items = upload.parseRequest(request); 

項目列表爲空。請給我代碼或想法。

回答

0

你不能用普通的AJAX上傳文件。 在許多JS庫中都有解決方法,所以最好使用一些JS庫(如Jquery)。

+0

但我有請求中的文件,我使用螢火蟲觀察它。編碼形式的文件數據 – user1172963 2012-02-05 14:05:14

+0

好的,如果你使用現代瀏覽器,它將工作,但文件傳輸方式有點不同。 Struts 1.1不支持這個功能,因爲它比您嘗試使用的功能更老。請在通常的請求參數(如request.getParameter(「file」))中查找。 (不在文件中)。 – 2012-02-05 14:15:23

+0

使用request.getParameter(「file」)這樣的請求對象,我得到null – user1172963 2012-02-06 08:16:28