无法弄清楚为什么这会不断创建2个文件夹?它创建一个'0'文件夹,无论jobID来自html。我想在jobID文件夹中上传文件,而不是'0'文件夹。
int userID = 1; // test
String coverLetter = "";
String status = "Review";
int jobID = 0;
String directoryName = "";
boolean isMultipart = ServletFileUpload.isMultipartContent(request);
if(isMultipart && request.getContentType() != null)
{
// Create a factory for disk-based file items
FileItemFactory factory = new DiskFileItemFactory();
// Create a new file upload handler
ServletFileUpload upload = new ServletFileUpload(factory);
// Parse the request
List /* FileItem */ items = null;
try
{
items = upload.parseRequest(request);
}
catch(FileUploadException e) {}
// Process the uploaded items
Iterator iter = items.iterator();
while(iter.hasNext())
{
FileItem item = (FileItem)iter.next();
if(item.isFormField())
{
if(item.getFieldName().equals("coverLetter"))
coverLetter = item.getString();
if(item.getFieldName().equals("jobID"))
jobID = Integer.parseInt(item.getString());
}
directoryName = request.getRealPath("/") + "/Uploads/CV/" + jobID + "/";
File theDir = new File(directoryName);
if (!theDir.exists())
theDir.mkdir();
if(item.getFieldName().equals("file"))
{
File uploadedFile = new File(directoryName + item.getName());
try
{
item.write(uploadedFile);
}
catch(Exception e) {}
}
}
编辑:
问题解决了。我想上传文件
这是因为它在jobID文件夹中,而不是'0'文件夹。
答案 0 :(得分:1)
我怀疑这不是真的:
item.getFieldName().equals("jobID")
虽然有点难以猜测。您是否尝试过使用Eclipse(或类似版本)进行调试?添加一些日志记录也可能有所帮助。
答案 1 :(得分:1)
必须从请求中解析2个项目,因此您可能正在发送2个上传项目。
第一项没有jobID FieldName,因此目录名仍然是
.../Uploads/CV/0
这就是造成问题的时间。
第二项确实有作业ID,因此可以正确创建目录。
您可以发布表单,以便我们可以看到,它可能是那里的东西。求职信是否是没有jobId的附加文件?
如果jobID存在,你可以通过仅创建dir来解决它。
答案 2 :(得分:0)
尝试在以下行之前打印/记录jobID
:
directoryName = request.getRealPath("/") + "/Uploads/CV/" + jobID + "/";