栈的基本操作

电商模块流程图

  返回  

SpringMVC文件上传

2021/7/20 17:07:15 浏览:
  • 文件上传是项目开发中最常见的功能之一 ,用户从客服端选取相应的文件上传到服务器端

文件上传客户端表单需要满足:

  • 表单项type=“file”
  • 表单的提交方式是post
  • 表单的enctype属性是多部分表单形式,及enctype=“multipart/form-data”
<form action="${pageContext.request.contextPath}/user/quick22" method="post" enctype="multipart/form-data">
        名称<input type="text" name="username"><br/>
        文件1<input type="file" name="uploadFile"><br/>
        <input type="submit" value="提交">
    </form>
pageContext对象是javax.servlet.jsp.PageContext 类的实例,用来代表整个JSP页面。
${pageContext.request.contextPath}是JSP取得绝对路径的方法等价于<%=request.getContextPath()%> 。
也就是取出部署的应用程序名或者是当前的项目名称

 例如,项目名称是demo1在浏览器中输入为http://localhost:8080/demo1/a.jsp
 ${pageContext.request.contextPath}或<%=request.getContextPath()%>取出来的就是/demo1
 而"/"代表的含义就是http://localhost:8080

在这里插入图片描述

文件上传示例

导入jar包或Maven依赖

	<dependency>
      <groupId>commons-fileupload</groupId>
      <artifactId>commons-fileupload</artifactId>
      <version>1.3.1</version>
    </dependency>
    <dependency>
      <groupId>commons-io</groupId>
      <artifactId>commons-io</artifactId>
      <version>2.3</version>
    </dependency>

配置bean:multipartResolver

<!--文件上传配置-->
<bean id="multipartResolver"
class="org.springframework.web.multipart.commons.CommonsMultipartResolve
r">
	<!-- 请求的编码格式,必须和jSP的pageEncoding属性一致,以便正确读取表单的内容,
	默认为ISO-8859-1 -->
	<property name="defaultEncoding" value="utf-8"/>
	<!-- 上传文件大小上限,单位为字节(10485760=10M) -->
	<property name="maxUploadSize" value="10485760"/>
	<property name="maxInMemorySize" value="40960"/>
</bean>

这个bena的id必须为:multipartResolver , 否则上传文件会报400的错误!

CommonsMultipartFile 的 常用方法:
String getOriginalFilename():获取上传文件的原名
InputStream getInputStream():获取文件流
void transferTo(File dest):将上传文件保存到一个目录文件中

编写前端页面

<form action="${pageContext.request.contextPath}/user/quick22" method="post" enctype="multipart/form-data">
        名称<input type="text" name="username"><br/>
        文件1<input type="file" name="uploadFile"><br/>
        <input type="submit" value="提交">
    </form>

单文件上传的代码实现

@RequestMapping(value="/quick22")
    @ResponseBody
    public void save22(String username, MultipartFile uploadFile) throws IOException {
        System.out.println(username);
        //获得上传文件的名称
        String originalFilename = uploadFile.getOriginalFilename();
        //
        uploadFile.transferTo(new File("C:\\upload\\"+originalFilename));
    }

多文件上传的代码实现

  • 多文件上传,只需要将页面修改为多个文件上传项,将方法参数MultipartFile类型修改为MultipartFile[]即可
<form action="${pageContext.request.contextPath}/user/quick23" method="post" enctype="multipart/form-data">
        名称<input type="text" name="username"><br/>
        文件1<input type="file" name="uploadFile"><br/>
        文件2<input type="file" name="uploadFile"><br/>
        <input type="submit" value="提交">
    </form>
@RequestMapping(value="/quick23")
    @ResponseBody
    public void save23(String username, MultipartFile[] uploadFile) throws IOException {
        System.out.println(username);
        for (MultipartFile multipartFile : uploadFile) {
            String originalFilename = multipartFile.getOriginalFilename();
            multipartFile.transferTo(new File("C:\\upload\\"+originalFilename));
        }
    }

联系我们

如果您对我们的服务有兴趣,请及时和我们联系!

服务热线:18288888888
座机:18288888888
传真:
邮箱:888888@qq.com
地址:郑州市文化路红专路93号