weixin_42695962
我以为是我以为
2021-01-06 14:30
采纳率: 20%
浏览 106
已采纳

Java上传多文件成功,如何获取文件名字存到对应的数据库字段

我的问题是:MultipartFile[],上传两个文件成功(一个图片和一个视频),如何分别获取这两个文件的名字,存进数据库图片和视频两个字段?

 @RequestMapping(value = "/uploads", method = RequestMethod.POST,headers="content-type=multipart/form-data")
        public @ResponseBody
        JsonResult uploads(@RequestParam("videoTitle") String videoTitle,@RequestParam("filename") MultipartFile[] files) {

            // 数据库保存的路径
            String uploadPathDB = "";
            // 最终上传路径
            String finalVideoPath = "C:\\VideoUpload\\";
            File dest = new File(finalVideoPath);
            System.out.println("dest"+dest);

            if (!dest.exists())
                dest.mkdir();

            String fileName ="";
            String OriginalFilename ="";
            String videoOutputName ="";

            //判断file数组不能为空并且长度大于0
        if(files != null && files.length > 0){
                //循环获取file数组中得文件
          for(int i = 0;i < files.length;i++){
                 MultipartFile file = files[i];

            //获取文件上传名字
             OriginalFilename = file.getOriginalFilename();
            //生成文件名,带后缀名
            fileName = UUID.randomUUID().toString()+"."+OriginalFilename.substring(OriginalFilename.lastIndexOf(".")+1);
              //生成保存到数据的视频名,要取前边的值,保持一致
             videoOutputName = fileName ;

              // 设置数据库保存的路径
              uploadPathDB = String.format("/VideoUpload/"+ videoOutputName);
              finalVideoPath = FILE_BASE + uploadPathDB;

            //保存文件
              if (!file.isEmpty()) {
                  try {
                      file.transferTo(new File( dest+fileName));
                  } catch (IOException e) {
                      e.printStackTrace();
                      JsonResult.errorMsg("上传失败");
                  }
              }

          }
        }
            LOGGER.info("uploadPathDB = {}", uploadPathDB);
            LOGGER.info("coverPath = {}", uploadPathDB + ".jpg");
            LOGGER.info("finalVideoPath {}= ", finalVideoPath);

            // 保存视频信息到数据库
            Video video = new Video();
            video.setVideoTitle(videoTitle);
            video.setVideoPath(uploadPathDB);
            video.setCoverPath(uploadPathDB + ".jpg");
            video.setCreateTime(new Date());
            String videoId = videoService.addVideo(video);
            System.out.println(videoId);
            return JsonResult.ok("上传成功");
    }

感谢回复的老哥

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

8条回答 默认 最新

  • qq_25376897
    qq_25376897 2021-01-06 15:41
    已采纳

    如果要求比较严格的,可以通过文件的魔数来判别文件类型

    点赞 评论
  • u012926813
    WriteProcessMomory 2021-01-06 14:37

    字段:

    类型(视频,图片,音频....)

    文件路径()

    点赞 评论
  • qq_25376897
    qq_25376897 2021-01-06 14:41

    1、使用commons-io-2.2.jar里面的.FilenameUtils

    import org.apache.commons.io.FilenameUtils;

    String filename = FilenameUtils.getName(file.getOriginalFilename());//file对应上传的文件MultipartFile file

    点赞 评论
  • weixin_42695962
    我以为是我以为 2021-01-06 14:44

    谢谢你的回复。看不太懂你意思,如我获取到文件名,不可能还做个判断,判断后缀名是jpg和png的存到图片字段吧。

    点赞 评论
  • qq_25376897
    qq_25376897 2021-01-06 15:39

    你获取到文件名之后,如果要区分图片和视频,肯定是要做判断的。不然怎么知道是什么类型的?

    点赞 评论
  • qq_25376897
    qq_25376897 2021-01-06 15:40

    判断后缀是一种方法。不过后缀名可以随便改,不能保证真实性

    点赞 评论
  • weixin_42695962
    我以为是我以为 2021-01-11 14:03

    谢谢,我用另一种方法  接受两个MultipartFile就容易处理了。

    点赞 评论
  • lzm1575
    清橙学长 2021-04-27 10:57

    楼主是怎么做的

    点赞 评论

相关推荐