2010-10-11 62 views
2

大家好我有一個示例代碼使用Jakarta HttpClient將文件上傳到Web服務器。 我想要的是爲每個上傳模擬多個文件上傳不同名稱的相同文件。 這可能嗎?任何提示?用一個文件模擬多個文件上傳

A.K.

+0

需要更多的細節。什麼阻止你現在做這件事? – 2010-10-11 12:07:18

+0

那麼我在多個線程上傳文件。我想要的是在每個線程上傳測試相同的文件,但具有不同的文件名! – Antonis 2010-10-11 13:35:50

回答

3

只需添加具有相同文件內容但不同部分和文件名的不同多部分部件。使用InputStreamBody,您可以爲每個零件指定不同的文件名。例如。

MultipartEntity entity = new MultipartEntity(); 
entity.addPart("file1", new InputStreamBody(new FileInputStream(file), "name1.ext")); 
entity.addPart("file2", new InputStreamBody(new FileInputStream(file), "name2.ext")); 
entity.addPart("file3", new InputStreamBody(new FileInputStream(file), "name3.ext")); 
// ... 

在Servlet代碼,假設你使用Commons FileUpload,你可以只遍歷,你已經從與文件上傳API的幫助,在for循環請求中提取的多項目。

List<FileItem> items = new ServletFileUpload(new DiskFileItemFactory()).parseRequest(request); 
for (FileItem item : items) { 
    if (item.isFormField()) { 
     // Process regular field. 
    } else { 
     // Process uploaded file. 
    } 
} 
+0

+1還有12個.. – 2010-10-11 12:11:50

+0

如何在HttpClient 3.x中編寫InputStreamBody? – Antonis 2010-10-13 17:16:22

+0

我看到你已經問過[另一個問題](http://stackoverflow.com/questions/3926391/inputstreambody-equivalent-in-httpclient-3-x)關於那個:) – BalusC 2010-10-13 18:00:41