文件上传

本文介绍了一个用于上传音频文件并将其转换为特定格式的方法。该方法首先保存原始音频文件,然后将其转换为 .wav 格式,并更新了相关记录。
  1. 保存音频并转换格式(转换音频另一篇内容)
public class FileUpload {



   //文件上传
   public static String uploadFile(MultipartFile file,String questionId ,String userId, HttpServletRequest request) throws IOException {
       String fileName = file.getOriginalFilename();
       String suff= fileName.substring(fileName.lastIndexOf("."), fileName.length());
       fileName = questionId+userId+suff;

       String filePath = Util.getProperty("uploadFile", "filePath");

       File tempFile = new File(filePath,  String.valueOf(fileName));
       if (!tempFile.getParentFile().exists()) {
           tempFile.getParentFile().mkdir();
       }
       if (!tempFile.exists()) {
           tempFile.createNewFile();
       }else{
           tempFile.delete();
       }
       file.transferTo(tempFile);

       return tempFile.getName();
   }

   //文件删除
   public static void deleteFile(String fileName ,  HttpServletRequest request) throws IOException {

       String filePath = Util.getProperty("uploadFile", "filePath");
       File tempFile = new File(filePath,  String.valueOf(fileName));
       if (tempFile.exists()) {
           tempFile.delete();
       }
   }
}
/**
     * 根据题目ID和用户ID保存语音文件并更新记录
     * @param file
     * @param questionId
     * @param userId
     * @throws Exception 
     */
    public void uploadFile(MultipartFile file, String questionId, String userId ,HttpServletRequest request) throws Exception {
        // TODO Auto-generated method stub
        if(!file.isEmpty()){
             //删除文件
            ExaminationScoreExample example = new ExaminationScoreExample();
            example.createCriteria().andExaminationQuestionsIdEqualTo(Integer.valueOf(questionId)).andUserIdEqualTo(Integer.valueOf(userId));
            List<ExaminationScore> examinationScoreList = examinationScoreMapper.selectByExample(example);
            if(examinationScoreList != null &&  examinationScoreList.size() > 0){
                 if(examinationScoreList.get(0)!=null && examinationScoreList.get(0).getAudioPath()!=null){
                       FileUpload.deleteFile( examinationScoreList.get(0).getAudioPath(), request);
                   }


                String filePath = FileUpload.uploadFile(file,questionId,userId+System.currentTimeMillis(), request);
                logger.info("filePath:" + filePath);

                 String wavFilePath= filePath.substring(0,filePath.lastIndexOf("."))+".wav";
                 String parentPath = Util.getProperty("uploadFile", "filePath");
                 PCM2WAV.convertAudioFiles(parentPath+filePath, parentPath+wavFilePath);
                 FileUpload.deleteFile( filePath, request);
                //更新记录
                ExaminationScore examinationScore = new ExaminationScore();
                examinationScore.setId(examinationScoreList.get(0).getId());
                examinationScore.setAudioPath(wavFilePath);
                examinationScore.setUpdateTime(new Date());
                examinationScoreMapper.updateByPrimaryKeySelective(examinationScore);
            }
        }  

    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值