2014-12-29 3 views
0

내가 업로드 후 파일 만 이름을 바꿀려고 이름을 바꿉니다 내가 오류는 다음과 같습니다파일 (서블릿에서 파일 업로드)

File Upload Failed due to java.io.FileNotFoundException: C:\Users\Akhil\Documents\CryptographicSteganography\Image\toshaMon Dec 29 22:21:41 IST 2014.jpg (The filename, directory name, or volume label syntax is incorrect). 

내가뿐만 아니라 유래에 통해 거의 모든 가능한 관련 주제에 갔다 다른 사이트에서는이 오류를 해결할 수 없습니다.

내 서블릿 클래스 : 댓글이 엄청 많이 약

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" 
    pageEncoding="ISO-8859-1"%> 
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> 
<title>Upload File</title> 
</head> 
<h1><% 
    String FileType = request.getParameter("select"); 
    out.println("File Type is: "+FileType); 
    session.setAttribute("FileType", FileType); 
%> 
</h1> 
<body> 
<body> 

File: 
<%if (FileType.equalsIgnoreCase("image")){%> 

    <form method="POST" action="FileUploadServlet" enctype="multipart/form-data" > 
    <input type="file" name="<%=session.getAttribute("FileType")%>" accept="image/*"> <br/> 
    <input type="submit" value="Upload" name="upload" > 
    </form> 

<% } 

else if (FileType.equalsIgnoreCase("audio")){%> 

<form method="POST" action="FileUploadServlet" enctype="multipart/form-data" > 
<input type="file" name="<%=session.getAttribute("FileType") %>" accept="audio/*" > <br/> 
<input type="submit" value="Upload" name="upload" > 
</form> 
<% } 

else if (FileType.equalsIgnoreCase("video")){%> 

<form method="POST" action="FileUploadServlet" enctype="multipart/form-data" > 
<input type="file" name="<%=session.getAttribute("FileType") %>" accept="video/*" > <br/> 
<input type="submit" value="Upload" name="upload" > 
</form> 
<% } 
%> 

</body> 
</body> 
</html> 

죄송합니다 : : 아래

package FileUploadHandler; 

import com.pointerunits.web.*; 

import java.io.File; 
import java.io.IOException; 
import java.util.Date; 
import java.util.List; 

import javax.servlet.ServletException; 
import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 

import org.apache.commons.fileupload.FileItem; 
import org.apache.commons.fileupload.disk.DiskFileItemFactory; 
import org.apache.commons.fileupload.servlet.ServletFileUpload; 
import org.apache.commons.io.FilenameUtils; 

/** 
* Servlet implementation class FileUploadServlet 
*/ 
public class FileUploadServlet extends HttpServlet { 
    private static final long serialVersionUID = 1L; 

    Date date = new Date(); 
    String name = null; 

    public String UPLOAD_DIRECTORY = ""; 
    /** 
    * @see HttpServlet#HttpServlet() 
    */ 

    public FileUploadServlet() { 
     super(); 
     // TODO Auto-generated constructor stub 
    } 


    /** 
    * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) 
    */ 
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
     // TODO Auto-generated method stub 
    } 

    /** 
    * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) 
    */ 
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
     // TODO Auto-generated method stub 
     //process only if its multipart content 
     String FileType = (String)request.getSession().getAttribute("FileType"); 
     //System.out.println(FileType); 

     String usrnam = (String) request.getSession().getAttribute("name"); 
     //System.out.println(usrnam); 
     switch (FileType) { 
      case "image": 
       //UPLOAD_DIRECTORY = "C:/Users/Akhil/Downloads/SpringMain/SpringMain/WebContent/WEB-INF/Uploads/Image"; 
       UPLOAD_DIRECTORY = "C:/Users/Akhil/Documents/CryptographicSteganography/Image"; 
       break; 


      case "audio": 
       UPLOAD_DIRECTORY = "C:/Users/Akhil/Documents/CryptographicSteganography/Image"; 
       break; 


      case "video": 
       UPLOAD_DIRECTORY = "C:/Users/Akhil/Documents/CryptographicSteganography/Image"; 
       break; 

     default: 
      System.out.println("invalid path"); 
      break; 
     } 

     //UPLOAD_DIRECTORY = getServletContext().getRealPath(UPLOAD_DIRECTORY); 
     //System.out.println(UPLOAD_DIRECTORY); 
       if(ServletFileUpload.isMultipartContent(request)){ 

        try { 

         List<FileItem> multiparts = new ServletFileUpload(

            new DiskFileItemFactory()).parseRequest(request); 

         // System.out.println(getName()); 
     String nam = usrnam+date.toString(); 
         for(FileItem item : multiparts){ 

          if(!item.isFormField()){ 
           String name = item.getName(); 
           //System.out.println(name); 
           File uploadedFile = new File(UPLOAD_DIRECTORY+File.separator+nam+name.substring(name.indexOf('.'))); 
           item.write(uploadedFile); 
           //File uploadedFile = new File(UPLOAD_DIRECTORY, name); 
        // item.write(new File(UPLOAD_DIRECTORY + File.separator + nam + name)); 
          // System.out.println("uploaded file : "+uploadedFile.toString()); 

//        System.out.println(nam); 
//        String f1 = uploadedFile.getAbsolutePath(); 
//        System.out.println(f1); 
//        
//        File oldName = new File(f1); 
//        //File newName = new File(UPLOAD_DIRECTORY+File.separator+nam+"."+FilenameUtils.getExtension(oldName.toString())); 
//        File newName = new File(UPLOAD_DIRECTORY,nam+name.substring(name.indexOf('.'))); 
//        File uploadedFile = new File ("C:\\Users\\Akhil\\Documents\\CryptographicSteganography\\Image\\IMAG0187.jpg"); 
//        File newName = new File("C:\\Users\\Akhil\\Documents\\CryptographicSteganography\\Image\\toshaMon Dec 29 22:01:40 IST 2014.jpg"); 
//        boolean flag = uploadedFile.renameTo(newName); 
//        
//        System.out.println(newName.toString()); 
//        
////        File uploadedFile = new File(UPLOAD_DIRECTORY , nam); 
////        item.write(uploadedFile); 
//        


          } 

         } 

         System.out.println(); 

         //File uploaded successfully 

         request.setAttribute("message", "File Uploaded Successfully"); 

        } catch (Exception ex) { 

         request.setAttribute("message", "File Upload Failed due to " + ex); 

        }   



       }else{ 

        request.setAttribute("message", 

             "Sorry this Servlet only handles file upload request"); 

       } 



       request.getRequestDispatcher("/result.jsp").forward(request, response); 

    } 

} 

가 .jsp로 웹 페이지입니다 내 프로그램은 테스트 단계를 통과했다

+0

하는 선에서 당신은 예외를받을 수 있나요 체크 item.write(uploadedFile); 전에? –

답변

0

올바른 문제가있을 수 있습니다. 폴더가 올바르지 않아서 폴더에 액세스 할 수 없습니다. 이것이 사실이 아닌 경우.

파일 이름 format의 공백을 공백이 포함되지 않은 형식 (예 : Sample Format Date)으로 제거해야합니다. 공간이 문제를 일으킬 수 있기 때문입니다.

if(!uploadedFile.exists()){ 
    uploadedFile.createNewFile(); 
} 
+0

시도했습니다 작동하지 않았다! –

+0

@AkhilNair는 디렉토리를 변경합니다 .. 서버에서 임시 폴더를 만들고 해당 폴더를 사용해보십시오. 'users' 폴더에'올바른 문제 '가 있으면'uploadedFile.createNewFile();'는 어떤 파일도 생성하지 않습니다. 다른 폴더를 사용해보십시오. –