ssm框架---实现简单的文件的上传

本文详细介绍了如何在Java项目中配置并使用Apache POI进行Office文档操作,以及利用commons-fileupload实现文件上传功能。从依赖配置、上传原理到控制器层实现,提供了全面的指导。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.配置poi依赖

	<!--对应xls\xlsx\pptx\docx\类文件-->
		<dependency>
			<groupId>org.apache.poi</groupId>
			<artifactId>poi-ooxml</artifactId>
			<version>4.1.0</version>
		</dependency>
	<!--对应doc/ppt/vsd/pub/msg类文件-->
		<dependency>
			<groupId>org.apache.poi</groupId>
			<artifactId>poi-scratchpad</artifactId>
			<version>4.0.1</version>
		</dependency>

2.配置上传下载需要的工具包

<!--  上传下载需要的-->
		<dependency>
			<groupId>commons-fileupload</groupId>
			<artifactId>commons-fileupload</artifactId>
			<version>1.3.1</version>
		</dependency>

文件上传就是讲本地的资源通过网络传输发送到服务器上。

文件上传的原理其实就是:
  IO流实现
  ↓
通过二进制流的方式向服务器传输数据
  ↓
服务器再通过流读取到数据
  ↓
然后解析成文件
  ↓
最终保存在服务器上

commons-fileupload工具包主要是我们用来操作文件上传的,里面封装了对流操作的全过程

3.在配置文件中添加bean

这个id不可以乱起名字!
用来解析上传的文件

 <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
 	<property name="defaultEncoding" value="utf-8"></property>
 	<property name="maxUploadSize" value="1024000"></property>
 	<property name="maxInMemorySize" value="204800"></property>
 	<property name="uploadTempDir" value="/"></property>
 </bean>

常用属性:

  • defaultEncoding:编码字符集
  • maxUploadSize:文件的大小限制,默认为-1(无限制,单位字节)
  • maxInMemorySize:内存缓冲区大小,超过时写入硬盘,默认为-1
  • uploadTempDir:临时文件目录,默认是servlet容器的临时目录

4.jsp页面

    <form action="upload" method="post" enctype="multipart/form-data">
        File:<input type="file" name="fil">
        <input type="submit" value="Submit">
    </form>

这里enctype属性

  • 默认属性:application/x-www-form-urlencoded,会将表单中的数据变为键值对的形式。
    如果action为get,则将表单数据编码为(name=value&name2=value2…)拼接到url后面(eg:http://localhost:8080/ssm/test/upload?id=1)
    如果action为post,则浏览器把form数据封装到http body中,然后发送到服务器。
  • multipart/form-data
    将表单中的数据变为二进制数据上传上去

4.controller层

实现,简单的上传,存储到指定的本机电脑的目录下
重复名字的图片会被覆盖

  @RequestMapping("upload")
    public String upload(MultipartFile fil, HttpServletRequest request){
        if (fil==null){
            return "File";
        }
        //fil.getContentType()文件类型
        //fil.getName()是input里面对应得name
        System.out.println(fil.getContentType()+"======"+fil.getName());
        //file.getOriginalFilename()是文件的名字
        //file.getSize()文件大小 B
        System.out.println(fil.getOriginalFilename()+"====="+fil.getSize());
		//自行指定路径
        File f = new File("C:/Users/XXX/Desktop/imgs/");
        if(!f.exists()){//如果这个路径下这个文件夹不存在
            f.mkdirs();//那么就创建这个文件夹
        }
        File file = new File(f,fil.getOriginalFilename());
        try {
            //进行上传 上传到的位置(file中带了路径和文件名)
            fil.transferTo(file);
        } catch (IOException e) {
            e.printStackTrace();
        }

        return "File";
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值