преобразовать CommonsMultipartFile в файл

Я использую плагин, который загружает файлы как CommonsMultipartFile. Загрузка работает нормально, но я пытаюсь использовать другой плагин для чтения заголовка файла (заголовок mp3), но он не будет принимать CommonsMultipartFile, только обычные файлы. Есть ли способ либо преобразовать CommonsMultipartFile в файл, либо выполнить какую-либо другую работу. Я попытался скопировать файл, откуда он был загружен, но, похоже, это не сработало. вот что у меня есть до сих пор:

if (request instanceof MultipartHttpServletRequest) {

    MultipartHttpServletRequest multiRequest = (MultipartHttpServletRequest)request;
        CommonsMultipartFile file =  (CommonsMultipartFile)multiRequest.getFile("files");   

            moveFile(file)
   }

   private moveFile(CommonsMultipartFile file){
    def userId = getUserId()
    def userGuid = SecUser.get(userId.id).uid
    def webRootDir = servletContext.getRealPath("/")


    def userDir = new File(webRootDir, "/myUsers/${userGuid}/music")
    userDir.mkdirs()
    file.transferTo( new File( userDir,file.originalFilename))      
    def myFile = new File( "/myUsers/${userGuid}/music/" +     file.originalFilename)


    AudioFile audioFile = AudioFileIO.read(file);

             //AudioFile is expecting a file, not a CommonsMultipartFile 

}

Однако, когда я это делаю, я получаю эту ошибку:

groovy.lang.MissingMethodException: нет подписи метода: статический org.jaaudiotagger.audio.AudioFileIO.read() применим для типов аргументов: (org.springframework.web.multipart.commons.CommonsMultipartFile) значения: [org.springframework.web .multipart.commons.CommonsMultipartFile@10a531]

Спасибо Джейсон


person jason    schedule 30.12.2011    source источник


Ответы (1)


Ваш код скопировал файл MultiPart в файл, но по-прежнему использовал файл Multipart для AudioFileIO.

Должно быть так:

private moveFile(CommonsMultipartFile file){
    def userId = getUserId()
    def userGuid = SecUser.get(userId.id).uid
    def webRootDir = servletContext.getRealPath("/")

    def userDir = new File(webRootDir, "/myUsers/${userGuid}/music")
    userDir.mkdirs()
    File myFile = new File( userDir,file.originalFilename)
    file.transferTo(myFile)      

    //
    // !!!!!! you have to pass myFile there
    //
    AudioFile audioFile = AudioFileIO.read(myFile) 
}
person Igor Artamonov    schedule 30.12.2011