преобразовать CommonsMultipartFile в файл - PullRequest
0 голосов
/ 30 декабря 2011

Я использую плагин, который загружает файлы как 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.jaudiotagger.audio.AudioFileIO.read () применим для типов аргументов: (org.springframework.web.multipart.commons.CommonsMultipartFile) значения: [org. springframework.web.multipart.commons.CommonsMultipartFile@10a531]

Спасибо Ясон

1 Ответ

3 голосов
/ 30 декабря 2011

Ваш код скопировал файл 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) 
}
...