我想上傳一個文件,使用commons-fileupload-1.1.1.jar
文件(我知道它不是最新版本,但它帶有struts 1.3.10
,所以我使用相同的)。Java - Commons-fileupload.jar - 問題
現在的問題是,當我解析request
(HttpServletRequest的),以獲得FileItem
的List
一個S,我得到一個空列表。
DiskFileItemFactory factory = new DiskFileItemFactory();
File tempDir = new File("/fileUploadDirectory");
tempDir.mkdir();
// Set factory constraints
factory.setSizeThreshold(10000);
factory.setRepository(tempDir);
// Create a new file upload handler
ServletFileUpload upload = new ServletFileUpload(factory);
// Set overall request size constraint
upload.setSizeMax(10000);
// Parse the request
List items = upload.parseRequest(request);
System.out.println(items);
System.out.println(request.getContentLength());
// Process the uploaded items
Iterator<FileItem> iter = items.iterator();
while (iter.hasNext()) {
FileItem item = iter.next();
if (item.isFormField()) {
System.out.println("File is a FormField");
} else {
System.out.println("File is a File");
}
}
Q1。爲什麼我得到一個空的列表?
當我通過request.getContentLength()
(如上面的代碼所示)打印請求的大小時,我得到一些數字數據(1536),我認爲它顯示了文件的長度。如果它顯示文件的長度,那麼爲什麼我沒有得到FileItem
的列表?
說明:我使用Struts 1.3.10
和ActionForm
。是造成任何問題。
注意:我解析請求時也沒有得到任何異常。
我使用'multipart/form-data'和'post'。我也嘗試過使用Struts內置的文件上傳組件。它也沒有工作,因爲我正在使用HTML的'
這並不奇怪。如果您不使用框架提供的組件,它將無法將請求與特定操作和模型正確關聯。 – BalusC 2010-03-07 17:43:33