2012-01-16 6 views
0

내 GSP에 업로드 된 파일을 나타내는 속성이있는 도메인 클래스가 있습니다. 그 파일을 바이트 배열 (byte [] 파일)로 정의했습니다. 특정 작업이 발생하면 첨부 파일이있는 메일을 보냅니다. 내 SendMail 서비스의 일부입니다.데이터베이스에서 모든 유형의 javaMail 첨부 파일 전송

int i = 1; 
     [requestInstance.picture1, requestInstance.picture2, requestInstance.picture3].each(){ 
      if(it.length != 0){ 
       DataSource image = new ByteArrayDataSource(it, "image/jpeg"); 
       helper.addAttachment("image" + i + ".jpg", image); 
       i++; 
      } 
     } 

이미지 파일에는 문제가 없습니다. 하지만 지금은 모든 파일 형식으로 작업 할 수 있기를 원하며이를 구현하는 방법에 대해 궁금합니다. 또한 데이터베이스에 실제 파일 이름을 저장하려고합니다. 모든 도움을 환영합니다.

+0

다른 파일의 파일 이름을 알고 있습니까? 아니면 그냥 이진 데이터? –

+0

@splix 도메인 클래스에 정의 된 모든 이진 데이터입니다. 하지만 그건 중요하지 않습니다. 도메인 클래스, GSP 및 컨트롤러 로직을 변경할 수 있습니다. 나는 그걸 최선의 방법으로하고 싶다. – drago

+0

이 경우 귀하의 문제를 이해할 수 없습니다. 파일 이름/mimetype (같은 종류의 것들)로 바이너리 데이터를 첨부하면됩니다. 내 말은,이 코드는 모든 바이너리 데이터에서 작동한다는 것인가? –

답변

2

코드에 파일 이름과 MIME 유형이 지정된 곳을 볼 수 있습니다. 첨부 파일 데이터와 함께 데이터베이스에서 해당 정보를 저장하고 복원하는 것이 간단해야합니다.

데이터의 바이트 배열에서 MIME 형식이 무엇인지, 좋은 파일 이름이 무엇인지 알아 내려고 시도하는 경우 문제가 더 어려워집니다. 시도해보십시오 this.

+0

그래서이 작업을 수행하는 적절한 방법은 mimetypes를 보유 할 테이블에 추가 필드를 넣는 것입니다. 그러나 여전히 조금 제한적입니다. 내가 진정으로 원하는 것은 올바른 확장자를 가진 파일을 보낼 수 있다는 것입니다. 이 파일들은 내 도메인 클래스 인스턴스와 연결되어 있고 연결되어있는 인스턴스를 알아야하기 때문에이 파일을 데이터베이스에 유지해야합니다. – drago

+0

파일 이름 확장자에서 mimetype을 가져올 수 있습니다. 파일 이름 알아? –

관련 문제