我想創建一個上傳servlet,從窗體處理enctype =「multipart/form-data」。我想上傳的文件是zip文件。但是,我可以上傳並在本地主機上讀取文件,但是當我上傳到服務器時,當我想上傳文件時,出現「文件未找到」錯誤。這是由於我使用的Struts框架嗎?謝謝你的幫助。這裏是我的代碼的一部分,我使用FileUpload從http://commons.apache.org/fileupload/using.html在服務器上的Struts的FileUpload問題
我已經改爲使用ZipInputStream,但是,如何引用ZipFile zip而不使用本地磁盤地址(即:C://zipfile.zip )。由於沒有實例化,zip爲null。我將需要解壓縮並讀取內存中的zipentry,而不寫入服務器。
用於上傳servlet: > 私人ZipFile zip; 私人CSVReader閱讀器; boolean isMultipart = ServletFileUpload.isMultipartContent(request);如果(isMultipart){ DiskFileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
List <FileItem> items = upload.parseRequest(request);
Iterator iter = items.iterator();
while (iter.hasNext()) {
//Iterating through the uploaded zip file and reading the content
FileItem item = (FileItem) iter.next();
ZipInputStream input = new ZipInputStream(item.getInputStream());
ZipEntry entry = null;
while ((entry= input.getNextEntry()) != null) {
ZipEntry entry = (ZipEntry) e.nextElement();
if(entry.getName().toString().equals("file.csv")){
//unzip(entry)
}
}
}
public static void unzip(ZipEntry entry){
try{
InputStream inputStream = **zip**.getInputStream(entry);
InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
reader = new CSVReader(inputStreamReader);
}
catch(Exception e){
e.printStackTrace();
}
}
<
感謝您的回覆,但我堅持引用ZipFile zip。如果沒有引用實際的文件,我不能在真正的服務器上工作。我編輯了上面的代碼。 – JustToHelp 2010-10-12 01:35:20
將其寫入磁盤,然後將'File'作爲ZipFile引用。 – BalusC 2010-10-12 01:54:03
你的意思是ZipFile zip =(ZipFile)item.write(文件)?這個文件會引用到哪裏? – JustToHelp 2010-10-12 02:38:33