2014-09-16 3 views
0

사용자가 업로드 한 첨부 파일을 저장하는 테이블이 있습니다. 첨부 파일은 text/doc/jpg 형식 일 수 있습니다. 또한 여러 사용자가 파일을 업로드 할 수 있습니다. 따라서 파일 이름이 같은 경우가있을 수 있습니다. 이렇게되면 DB 테이블의 첫 번째 파일이 다운로드됩니다. 따라서 파일 이름과 함께 하나 이상의 매개 변수를 추가하여 올바른 파일이 다운로드되도록 할 수 있습니다. 그 다른 매개 변수는 각각의 경우 고유 한 attachment_id 일 수 있습니다. 첨부 파일 ID를 기반으로 첨부 파일 다운로드

그 이름

public String downloadAttachFile() throws FileNotFoundException { 
    attachFileName = ServletActionContext.getRequest().getParameter("myFileFileName"); 
    fileInputStream = new FileInputStream(new File(AttachFileName)); 
    return SUCCESS; 

} 사전에 감사의 기준으로 파일을 다운로드하는 데 사용되는 작업 방법입니다.

+0

당신이 요구하는지 분명하지 않다. 한 번에 하나의 파일 만 다운로드 할 수 있습니다. 그것이 HTTP가 작동하는 방식입니다. –

+0

하나의 파일 만 다운로드해야합니다. 그러나 데이터베이스에는 같은 이름의 파일이있을 수 있습니다. 어떻게 처리해야합니까? 그래서 나는 이름 대신 참조로 ID를 사용하는 것을 생각하고있었습니다. 그게 가능하니? – Pradnya

+0

물론 가능합니다. –

답변

0

파일이 어디에 있는지 (파일 시스템?) 및 동일한 이름 (다른 폴더?)으로 저장할 수있는 방법과 한 번에 여러 파일을 다운로드하는 방법 및 방법은 잘 모르겠습니다. OS 메커니즘을 복제하여 foo.txtfoo(1).txt과 같이 끝에 (n)이라는 이름을 가진 여러 파일의 이름을 바꿉니다.

내 자신의 우편 question에 나는 answer에서 작성한 기능을 적용 주시기 바랍니다 :

// Set-up a list of filenames to prevent duplicate entries 
HashSet<String> entries = new HashSet<String>(); 

/* ====== ====== ====== ====== ====== ====== ====== ====== ====== ====== ====== 
    then call getUniqueFileName() for each file passing "entries" as parameter 
    to get an unique file name. 
====== ====== ====== ====== ====== ====== ====== ====== ====== ====== ====== */ 


private String getUniqueFileName(HashSet<String> entries, String completeFileName){       
    if (entries.contains(completeFileName)){             
     int extPos = completeFileName.lastIndexOf('.'); 
     String extension = extPos>0 ? completeFileName.substring(extPos) : "";   
     String partialFileName = extension.length()==0 ? completeFileName : completeFileName.substring(0,extPos); 
     int x=1; 
     while (entries.contains(completeFileName = partialFileName + "(" + x + ")" + extension)) 
      x++; 
    } 
    entries.add(completeFileName); 
    return completeFileName; 
} 
+0

실제로 파일은 데이터베이스에 저장됩니다. 여러 사용자가 있기 때문에 동일한 이름의 파일을 허용합니다. 따라서 파일 이름을 바꾸는 대신 ID를 기준으로 파일을 다운로드 할 수 있습니까 ?? – Pradnya

+0

필자는 위의 함수를 데이터베이스에서 오는 파일과 함께 사용하여 같은 이름의 zip 안에 넣지 못하게했습니다. 이는 절대적으로 가능합니다. 질문을 워크 플로우에 대한 세부 정보로 업데이트하십시오. –

+0

질문을 편집했습니다 – Pradnya

관련 문제