2012-11-29 45 views
0

我正在用我的JSP XMLHttpRequest()和文件上傳時,我在我的控制器做request.getContentType()我得到:處理的multipart/form-data的

multipart/form-data; boundary=---------------------------4664151417711. 

而且我沒有變如何獲取文件並在控制器中獲取它的內容。請任何人幫忙。

更新 - 我在我的jsp中這樣做。

function fileUpload() { 
var url= document.getElementById("urlId").value; 
var file= document.getElementById("xslId").files[0]; 
var formdata = new FormData(); 
formdata.append("url", url); 
formdata.append("file", file); 
var xhr = new XMLHttpRequest();  
xhr.open("POST","http://localhost:8080/XlsUpload/openSource.htm", true); 
xhr.send(formdata); 
xhr.onload = function(e) { 
    };      
    } 

,並在我的controller--

public void openSource(@ModelAttribute("domTool") DomTool domTool,HttpServletRequest  request,HttpServletResponse response){ 
    String type=request.getContentType(); 

而且我打如何獲得上傳文件的內容和文本字段,即URL在我的控制器中的值。我得到的類型爲multipart/form-data

+0

考慮增加額外的信息。通過添加代碼片段,您可以讓人們知道您的代碼的功能。在目前的形式下,很難猜測出什麼是錯的。 – ch4nd4n

+0

僅僅通過查看標籤,我可以想象你正在嘗試使用ajax請求上傳文件。你不能在ajax請求中出於安全原因做這件事,最好使用已經處理Ajax交互的組件,比如[blueImp jquery file upload](https://github.com/blueimp/jQuery-File上傳)(它使用iframe來處理* ajax請求*)。 –

+0

@LuiggiMendoza HTML5已經支持。儘管如此,它並不適用於所有的瀏覽器。 – ch4nd4n

回答

1

有一個名爲commons-fileupload的Apache commons解決方案用於解析多部分內容。你可以找到它here

最簡單的例子,從他們的tutorial複製看起來是這樣的:

@Override 
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
    FileItemFactory factory = new DiskFileItemFactory(); 
    ServletFileUpload upload = new ServletFileUpload(factory); 
    List items = upload.parseRequest(request); 

    // iterate over items (i.e. list of FileItem) and access 
    // the content with getInputStream() 
} 
+0

我認爲他想在JS – kromit

+1

中做這個@kromit它沒有任何意義......爲什麼他會談論上傳,jsp和控制器? – Yevgeniy

+0

我不好,對不起:) – kromit