2016-05-15 82 views
-1
 Part part = request.getPart("file"); 
     if (part != null){ 
     String fileName = extractFileName(part); 
     String filePath = savePath + File.separator + fileName; 
     part.write(savePath + File.separator + fileName); 
     String imageName = fileName; 
     } else{ 
      String fileName = "avatar.jpg"; 
      String filePath = savePath + File.separator + fileName; 
      part.write(savePath + File.separator + fileName); 
      String imageName = fileName; 
     } 

插入的if else語句轉換成代碼後,我在底部的代碼獲得這樣的錯誤說:imageName不能被解析爲一個變量,文件路徑不能被解析爲variabl 。但是,一旦我評論了我的if else聲明,一切都很好。有人能告訴我錯誤在哪裏嗎?JAVA的if else語句會導致錯誤在我的代碼

 request.setAttribute("Pic", filePath); 
     request.setAttribute("PicName", imageName); 

回答

5

您的「filePath」和「imageName」變量僅在if或else塊中可見。在if/then塊之前聲明這些變量,然後在if/then代碼中設置變量,而不是重新聲明它。

String filePath = ""; 
String imageName = ""; 
if (...) { 
... 
} else { 
... 
} 
request.setAttribute("Pic", filePath); 
request.setAttribute("PicName", imageName); 

有關範圍的更多信息,請參閱http://www.java-made-easy.com/variable-scope.html

1

同意@ CConrad96。然而,還有更多的改進可以做,例如,在ifelse最後3行是相同的。另外,如果你會寫imageName = fileName爲什麼不擺脫一個?最後,關於part.write的論點與filePath的值相同,爲什麼不使用它?

String fileName: 
Part part = request.getPart("file"); 
if (part != null){ 
    fileName = extractFileName(part); 
} else{ 
    fileName = "avatar.jpg"; 
} 

String filePath = savePath + File.separator + fileName; 
part.write(filePath); 

request.setAttribute("Pic", filePath); 
request.setAttribute("PicName", fileName); 
+0

加入此之後似乎工作的感謝alots! –

+0

對不起,但是這個代碼似乎沒有工作,因爲它給了我這個錯誤:java.io.IOException異常:java.io.FileNotFoundException:d:\南洋理工學院\ FYPJ Project2的\ FYPJ \的WebContent \型材(訪問被拒絕) –

+0

是你在我寫的代碼中有這個錯誤?我認爲我的代碼是好的,如果你的程序不允許訪問某些目錄,那不是代碼的錯,是你的錯。檢查文件是你希望它是,也許它移動到一個簡單的網站位置,(如* C:/資源/ [files_here] *有沒有辦法,我知道你爲什麼沒有訪問該目錄。 – UDKOX