2015-09-25 2 views
0

Мой код В GSP:Как проверить загрузку файла на сервер в контроллере GRAILS?

<html> 
    <body> 
    <g:form controller="some_controller" action="some_action" enctype="multipart/form-data"> 
     <input id="Resume" type="file" name="Resume" /> 
    </g:form> 
    </body> 
</html> 

Мой код контроллера:

def candidate = new Candidate(params) 
MultipartHttpServletRequest mhsr = (MultipartHttpServletRequest) request 
MultipartFile candResume = mhsr.getFile('candResume') 

if(userService.fileExt().contains(candResume.getContentType())) 
{ 
candidate.candResume=candResume.getBytes() //Converting a file into bytes 
if(candidate.validate()) 
    { 
    if(candidate.save(flush: true,failOnError: true)) 
    { 
    println "++++++++++Candidate Success+++++++++++++" 
    flash.candSuccess="Candidate successfully added." 
    } 
    } 
    else{ 
    println "====Sorry Candidate Upload Failed====" 
    flash.candFail="Candidate failure." 
    } 
} 

Мой код услуги:

public List fileExt(){ 
     List fileExtensions=["doc", "docx", "pdf", "rtf"] 
     println "--------in the service----------" 
     return fileExtensions 
    } 

Дело в если (userSe rvice.fileExt(). содержит (candResume.getContentType())) Служба получает вызов, но не перенастраивает все, что загружается, без каких-либо сообщений. Пожалуйста помоги. Спасибо заранее.

ответ

0

я бы, вероятно, сделать что-то вроде этого:

В контроллере:

def userService 
def candidate = new Candidate(params) 
    def resumeFile = request.getFile('candResume') 

    if (userService.allowedExtension(resumeFile)) { 
    blablabla 

в службе:

Class UserService { 

    def allowedExtension (aFile) { 
    List fileExtensions=["doc", "docx", "pdf", "rtf"] 
    println "--------in the service----------" 
    def extension = aFile?.originalFilename?.substring(aFile?.originalFilename?.lastIndexOf(".") + 1); 
    return fileExtensions.contains(extension); // if you rely on the actual file name 
    } 
} 
Смежные вопросы