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无法解析为变量,filePath无法解析为变量。但是,一旦我评论了我的if else声明,一切都很好。有人能告诉我哪里出错了吗?
request.setAttribute("Pic", filePath);
request.setAttribute("PicName", imageName);
答案 0 :(得分: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 :(得分:1)
同意@ CConrad96。但是,可以进行更多改进,例如,if
和else
上的最后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);