创建目录问题

时间:2011-03-13 15:30:29

标签: java

无法弄清楚为什么这会不断创建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'文件夹。

3 个答案:

答案 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 + "/";