基于springMVC的文件上传

基于springMVC的多文件上传和单文件上传

普通Java工程上传文件需要依赖这两个jar包:

本例所使用spring boot创建的web工程没有手动添加以上两个jar包的依赖,其他若需要则加上

accept="image/gif, image/jpeg, image/png":用于上传文件类型的限制

1.单文件上传

 

 

 

代码实现:

1.1:file.html:

<!--单文件上传-->
    <form action="uploadFile.do" method="post" enctype="multipart/form-data">
        <input type="file" name="file" value="单文件上传" >
        <input type="submit" value="单文件上传">
    </form>

1.2: FileController.java控制层:

@Controller
public class FileController {

    
    //单文件接收
    @PostMapping("/uploadFile.do")
    public String uploadFile(MultipartFile file) throws IOException {
        File file1 = new File("E:\\uploadFile\\" + file.getOriginalFilename());
        file.transferTo(file1);
        System.out.println(file1);
        return "file";
    }
}

2. 多文件上传

  

代码实现:

基于单文件上传多加上:multiple="multiple"

2.1: file.html:

<!--多文件上传-->
    <form action="uploadFiles.do" method="post" enctype="multipart/form-data">
        <input name="files" accept="image/gif, image/jpeg, image/png"  multiple="multiple" type="file" value="多文件上传" />
        <input type="submit" value="多文件上传" />
    </form>

2.2: FileController.java控制层:

import com.kmu.entity.FilesPO;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.io.IOException;

@Controller
public class FileController {

    //多文件接收
    @PostMapping("/uploadFiles.do")
    public String uploadFiles(FilesPO filesPO) throws IOException {
        //springMVC实现
        MultipartFile[] files = filesPO.getFiles();

        for(MultipartFile file:files){
            file.transferTo(new File("E:\\uploadFile\\" + file.getOriginalFilename()));
            System.out.println("文件名:"+file.getOriginalFilename());
        }

        return "file";
    }

   
}

2.3: FilesPO.java实体类:

import org.springframework.web.multipart.MultipartFile;

public class FilesPO {
    private MultipartFile[] files;   // 存储上传的文件

    public MultipartFile[] getFiles() {
        return files;
    }

    public void setFiles(MultipartFile[] files) {
        this.files = files;
    }
}

其他:

a.它可以生成几乎不会重复的一个字符串,把他加上文件名或文件后缀就是一个新的几乎不会重名的文件名:

long time = new Date().getTime();
String fileName  = time + UUID.randomUUID().toString().replace("-", "");

 b.还有,如果是要存入数据库或阿里云的oss里,只需把上面生成的随机文件名存入数据库;当查看文件的时候,把文件所在的本地文件夹名(E:\uploadFile)或oss桶的(https://kmu-headpic.oss-cn-chengdu.aliyuncs.com/)拼上从数据库去取出的文件名即可。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值