2012-05-18 2 views
0

Я хочу получить значения выпадающего списка в моей программе, чтобы объединить строку в мой путь к файлу, так что путь будет динамически изменяться в соответствии с пользователем input.iam new для apache commoms, прежде чем i использовал o'reilly api.Получение выпадающих значений с использованием apache commons в сервлете

вот мой код:

@Override 
public void doPost(HttpServletRequest request, 
      HttpServletResponse response) 
      throws ServletException, java.io.IOException 
{ 
     //FileItem f1; 
    String d1= request.getParameter("sel1"); 
    String d2=request.getParameter("sel2"); 
    String d3="/home/adapco/Desktop/output"; 
    String conc=d3+"/"+d1+"/"+d2+"/"; 
    filePath=(new StringBuilder()).append(conc).toString(); 
//  filePath="/home/adapco/Desktop/output/"; 
    isMultipart = ServletFileUpload.isMultipartContent(request); 
} 

я пытался отладки и я получаю путь Райта файла, но в то время как идти дальше, то fileItems показывает размер = 0 и и не входя в петлю из-за size0 ,

filePath="/home/adapco/Desktop/output/"; 

Если я передаю путь загрузки к файлу, то он отлично работает.

List fileItems = upload.parseRequest(request);  
    Iterator i = fileItems.iterator(); 
    while (i.hasNext()) 
    { 
    FileItem fi = (FileItem)i.next(); 
    if (!fi.isFormField()) 
    {   
     String fieldName = fi.getFieldName(); 
     String fileName = fi.getName(); 
     String contentType = fi.getContentType(); 
     boolean isInMemory = fi.isInMemory(); 
     long sizeInBytes = fi.getSize(); 
     if(fileName.lastIndexOf("\\") >= 0){ 
      file = new File(filePath + 
      fileName.substring(fileName.lastIndexOf("\\"))) ; 
     }else{ 
      file = new File(filePath + 
      fileName.substring(fileName.lastIndexOf("\\")+1)) ; 
     } 
     fi.write(file) ; 
     out.println("Uploaded Filename: " + fileName + "<br>"+filePath); 

    } 

мой HTML:

<%@page contentType="text/html" pageEncoding="UTF-8"%> 
<!DOCTYPE html> 
<html> 
<head> 
<title>File Uploading Form</title> 
</head> 
<body> 
<h3>File Upload:</h3> 
Select a file to upload: <br /> 
<form action="upload" method="post" 
        enctype="multipart/form-data"> 
<input type="file" name="file"> 
<br /> 
<select name="sel1"> 
<option label ="1">aerospace</option> 
<option label ="2">automotive</option> 
</select> 
<select name="sel2"> 
<option label="1">internal</option> 
<option label="2">demo</option> 
</select> 
<input type="submit" value="Upload File" /> 
</form> 
</body> 
</html> 

ответ

1

В request.getParameter() вызовы должны быть удалены. Они вызывают, что тело запроса анализируется до того, как Apache Commons FileUpload сможет его проанализировать. request.getParameter() не следует использовать в запросах multipart/form-data.

Вам необходимо собрать нормальные поля формы в else вашего if (!fi.isFormField()).

if (!fi.isFormField()) { 
    // Collect uploaded files. 
} 
else { 
    // Collect normal form fields. 
} 

Смотрите также FileUpload User Guide и this answer.

+0

: в ur ответьте .getfieldname и .getname обработает входной тип. То же самое будет работать для выпадающего списка? – ksa

+0

Есть подробные примеры ссылок, которые я разместил. – BalusC

+0

поблагодарить u.i будет стараться изо всех сил. – ksa

Смежные вопросы