나는 그림을 업로드하는 사용자와 함께 작동하는 웹 응용 프로그램 프로젝트에서 작업중인 초보자에서 grails입니다. 사용자는 프롬프트 목록을 사용하여 "헌트"를 만들 수 있습니다. 각 "프롬프트"는 참가자의 목표입니다 (예 : 좋아하는 캔디의 사진 업로드). 기본적으로 웹 응용 프로그램은 사진 작가가 소셜 활동을 공유하는 "스 캐빈 저 헌트"도구입니다.Grails 다운로드 할 사용자를위한 zip 파일 생성
지금 사용자가 업로드 한 모든 그림이 포함 된 zip 파일을 생성하기 위해 내 사용자 컨트롤러에 함수를 작성하는 데 문제가 있습니다. 이것은 내 컨트롤러 기능이 지금과 같은 모습입니다. 시작하려면 찾은이 예제를 사용했습니다. Generating a zip file.
def downloadAlbum(){
ByteArrayOutputStream baos = new ByteArrayOutputStream()
ZipOutputStream zipFile = new ZipOutputStream(baos)
//Instance of a user domain class
def userInstance = User.findByLogin(auth.user())
//pictures are uploaded to a prompt and stored as a photoInstance
//this line of code gets the actual file stored as byte[]
photoInstance.myFile = image.getBytes()
//select all photos that belong to the user and store them into a list
def photoInstanceList = userInstance ? Photo.findAllByMyUser(userInstance) : []
//Mapping
[userInstance: userInstance, photoInstanceList: photoInstanceList]
photoInstanceList.each {photo ->
if (photoInstance.myFile != "") {
File file = new File(photoInstance.myFile)
zipFile.putNextEntry(new ZipEntry(Photo.title+".jpeg"))
file.withInputStream { i ->
zipFile << i
}
zipFile.closeEntry()
}
}
zipFile.finish()
response.setHeader("Content-disposition", "filename=\"${login}.zip\"")
response.contentType = "application/zip"
response.outputStream << baos.toByteArray()
response.outputStream.flush()
}
나는 다음 사용자 컨트롤러에서 함수를 호출하는 링크를 생성하는 사용자보기에이 코드를 사용합니다. 내가 닫을 까? 내 코드에 누락 된 부분이 있습니까?
그건 그렇고, 이것은 Stack Overflow에서 작성한 첫 번째 질문입니다. 이 항목을 읽으려고 시간을 갖게되어서 고맙습니다. 명확하지 않은 부분이 있으면이 질문을 개선 할 수있는 부분을 참조하십시오. grails 2.1.1을 사용하고 있습니다.
감사합니다! 여기로 위의 코드를 복사 한 경우
스택 트레이스 디버깅에 큰 도움이 될 것입니다 아래 줄에
photo.title
대신Photo.title
를 사용해서는 안된다. – dmahapatro이 코드를 사용하면 어떻게됩니까? zip 파일이 없습니까? 잘못되었거나 불완전한 zip 파일입니까? 오류? 무엇이 잘못되었는지 알려면 게시물을 업데이트하십시오. – uchamp