2011-12-30 5 views
0

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

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) значения: [[email protected]0a531]

Благодаря джейсона

ответ

3

Ваш код скопировал MultiPart fi le в файл, но все еще используется файл 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) 
} 
+0

Спасибо! это сделало это – jason