2015-05-25 3 views
0

У меня есть метод контроллера и метод javascript для записи звука.Как обрабатывать истинные данные строки в javascript

Контроллер:

Этот контроллер будет возвращать строковые данные

@RequestMapping(value = "/sendAudioBlobData/{questionId}", headers = "content-type=multipart/*", method = { RequestMethod.GET, RequestMethod.POST }) 
    @ResponseBody 
    public String getBlob(HttpServletRequest request,HttpServletResponse response, ModelMap model, @RequestParam(value = "file") MultipartFile file, @PathVariable(value = "questionId") int questionId) { 

     boolean flag = false; 

     String id = Integer.toString(questionId); 

     String fileName = null; 

     byte[] bytes; 
     try { 

      bytes = file.getBytes(); 

      if (!file.isEmpty()) { 

       id = id + ".mp3"; 


       fileName = VOPortalConstants.NLE_USER_AUDIO_FILES_ROOT + File.separator + id; 

       BufferedOutputStream stream = new BufferedOutputStream(new FileOutputStream(new File(fileName))); 
       stream.write(bytes); 
       stream.close(); 

       File f = new File(fileName); 

       if(f.exists()) { 
        response.addHeader("Content-Length", f.length() + ""); 
        FileUtils.sendFile(f, response.getOutputStream()); 
       } 

       } 

     } 

     catch (IOException e) { 

      logger.error("ERROR: ", e); 
     } 

     String fName = fileName.replace(VOPortalConstants.NLE_PATH, VOPortalConstants.NLE_URL_CONST); 

     return fName; 

    } 

JS Метод:

Этот код предусматривает, что для запроса (POST) для записи пользователя аудио

function saveAudioFile() { 
    var questionId = window.questionList[window.counter].id; 

     recorder && recorder.exportWAV(function(blob) { 

     var formData = new FormData(); 
     formData.append("file", blob); 
     $.ajax({ 
      url : "sendAudioBlobData/" + questionId, 
      type: 'POST', 
      data: formData, 
      dataType: "text", 
      contentType: false, 
      processData: false, 
      success: function(data) { 
       debugger 

       var audio = $("#your_voice");  
       $("#your_voice_source").attr("src", data); 
       /****************/ 
       audio[0].pause(); 
       audio[0].load();//suspends and restores all audio element 
       //audio[0].play(); 
       /****************/ 
      }, 
      error: function() { 
      alert("not so boa!"); 
      } 
     }); 
     }); 
    } 

в контроллере, возвращаемое значение строка, которая выглядит следующим образом: -> Fname =/NLERESOURCES/NLE/VOICE/UserVoice \ 107.mp3

но возвращающие данные, выглядит следующим образом in js -> RIFF $ @ WAVEfmt

, как я бы обрабатывать истинные данные строки?

Благодаря

+0

# Ваш номер

ответ

0

FileUtils.sendFile возвращает файл как часть OutputStream ответа от контроллера.