小计文件上传的两种方式

之前介绍了文件下载的两种方式,今天介绍下文件上传的两种方式!

以下两种上传视频共用如下页面

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>上传视频到服务器</title>
</head>
<body>
<form action="/behavior/demoVideo/addDemoVideo" method="post" enctype="multipart/form-data">
	<input type="file" name="file" value="请选择待上传的视频文件" multiple="multiple">
	<input TYPE="submit" value="开始上传">
</form>
</body>
</html>

第一种:以视频来演示,图片没有做验证,感兴趣的朋友可以做下验证

 /**
     * 上传演示视频
     * @param file
     * @return
     */
    @Override
    public StateMsg addDemoVideo(MultipartFile file) {
        //1、对文件做判空
        String fileName = null;
        if (Objects.isNull(file) || file.isEmpty()) {
            logger.error("文件为空");
            return new StateMsg(false,"文件不能为空");
        }
        try {
            byte[] bytes = file.getBytes();
            String suffix = file.getOriginalFilename().split("\\.")[1];
            fileName = String.valueOf(System.currentTimeMillis())+"."+suffix;
            Path path = Paths.get(ConstansPropertity.videoPath + fileName);
            //如果没有files文件夹,则创建
            if (!Files.isWritable(path)) {
                Files.createDirectories(Paths.get(ConstansPropertity.videoPath));
            }
            //文件写入指定路径
            Files.write(path, bytes);
            logger.debug("文件写入成功...");
            return new StateMsg(true,fileName);
        } catch (IOException e) {
            e.printStackTrace();
            logger.error(e.getMessage());
        }
        return new StateMsg(true,"文件上传失败");
    }

第二种:以上传视频来演示

/**
     * 上传演示视频
     * @param file
     * @return
     */
    @Override
    public StateMsg addDemoVideo(MultipartFile file) {
        //1、对文件做判空
        String fileName = null;
        if(StringUtils.isEmpty(file.getOriginalFilename())) {

            return new StateMsg(false,"文件不能为空");
        }
        //2、定义文件的存储路径   C:/behavior/video/
        File dir = new File(ConstansPropertity.videoPath);
        if(! dir.isDirectory()) {
            dir.mkdirs();
        }
        try {
            String suffix = file.getOriginalFilename().split("\\.")[1];//截取视频文件后缀名
            fileName = String.valueOf(System.currentTimeMillis())+"."+suffix;
            //服务端保存文件对象
            File fileServer = new File(dir, fileName);
            file.transferTo(fileServer);
            return new StateMsg(true,fileName);
        } catch (IllegalStateException | IOException e) {
            // TODO Auto-generated catch block
            logger.error(e.getMessage());
        }
        return new StateMsg(true,"文件上传失败");
    }

其中第二种方法是springBoot中自带的,用于单文件上传,多文件(如图片)上传时做如下修改:

多文件上传

页面

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>上传多个文件到服务器</title>
</head>
<body>
<form action="/behavior/upload/uploadFiles" method="post" enctype="multipart/form-data">
	<input type="file" name="uploadFiles" value="请选择文件" multiple="multiple">
	<input TYPE="submit" value="上传">
</form>
</body>
</html>
/**
     * 上传图片文件
     * @param uploadFiles
     * @return
     */
    public static StateMsg uploadFiles(MultipartFile[] uploadFiles) {
        //1、对文件数组做判空
//        String name = uploadFiles[0].getOriginalFilename();
        if(StringUtils.isEmpty(uploadFiles[0].getOriginalFilename())) {

            return new StateMsg(false,"文件不能为空");
        }
        //2、定义文件的存储路径   C:/behavior/video/pic/
        File dir = new File(ConstansPropertity.filePath);
        if(! dir.isDirectory()) {
            dir.mkdirs();
        }
        try {
            //3、遍历文件数组,一个个上传
            for(int i = 0; i < uploadFiles.length; i++) {
                MultipartFile uploadFile = uploadFiles[i];
                String fileName = uploadFile.getOriginalFilename();
                //服务端保存文件对象
                File fileServer = new File(dir, fileName);
                System.out.println("file文件真实路劲"+fileServer.getAbsolutePath());
                //4、实现上传
                uploadFile.transferTo(fileServer);
            }
            return new StateMsg(true,"文件上传成功");
        } catch (IllegalStateException | IOException e) {
            // TODO Auto-generated catch block
            logger.error(e.getMessage());
        }
        return new StateMsg(true,"文件上传失败");
    }

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值