SpringMVC + servlet3.0 文件上传的配置和实现代码
程序员文章站
2024-03-01 13:33:46
简单几步,实现springmvc+servlet3.0文件上传功能:
第一步:配置web.xml文件中的servlet,添加multipart-config:...
简单几步,实现springmvc+servlet3.0文件上传功能:
第一步:配置web.xml文件中的servlet,添加multipart-config:
<!-- springmvc --> <servlet> <servlet-name>myweb</servlet-name> <servlet-class>org.springframework.web.servlet.dispatcherservlet</servlet-class> <init-param> <param-name>contextconfiglocation</param-name> <param-value>classpath:springmvc/servlet.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> <multipart-config> <!-- <location>/</location> --> <max-file-size>5242880</max-file-size> <!--单个文件最大大小:5mb--> <max-request-size>20971520</max-request-size> <!--所有文件最大大小:20mb--> <file-size-threshold>0</file-size-threshold> <!-- 超过这个大小直接存硬盘,而不是内存 --> </multipart-config> </servlet> <servlet-mapping> <servlet-name>myweb</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping>
第二步:在servlet.xml中配置multipartresolver:
复制代码 代码如下:
<bean id="multipartresolver" class="org.springframework.web.multipart.support.standardservletmultipartresolver"/>
第三步:创建接收form表单的controller:
package com.xjj.web.controller; import java.io.file; import java.io.ioexception; import java.util.map; import javax.servlet.servletexception; import javax.servlet.http.httpservletrequest; import javax.servlet.http.httpservletresponse; import javax.servlet.http.part; import org.springframework.stereotype.controller; import org.springframework.util.stringutils; import org.springframework.web.bind.annotation.requestmapping; import org.springframework.web.bind.annotation.requestparam; import org.springframework.web.bind.annotation.responsebody; import com.xjj.json.jsonresult; /** * 文件上传 * @author xujijun * */ @controller @requestmapping("/servlet/file") public class fileuploadcontroller { /** * 保存文件的目录,放在web目录、或一个指定的绝对目录下 */ private static final string save_dir = "uploadfiles"; @requestmapping("/upload") public @responsebody jsonresult upload(httpservletrequest request, httpservletresponse response, @requestparam map<string, object> p) throws servletexception, ioexception { // 获取 web application的绝对路径 string apppath = request.getservletcontext().getrealpath(""); // 构造文件存放的路径 string savepath = apppath + file.separator + save_dir; // 如果文件存放路径不存在,则mkdir一个 file filesavedir = new file(savepath); if (!filesavedir.exists()) { filesavedir.mkdir(); } for (part part : request.getparts()) { string filename = extractfilename(part); if(!stringutils.isempty(filename)){ part.write(savepath + file.separator + filename); } } return new jsonresult("200", "文件上传成功!", savepath); } /** * 从content-disposition头中获取源文件名 * * content-disposition头的格式如下: * form-data; name="datafile"; filename="photo.jpg" * * @param part * @return */ private string extractfilename(part part) { string contentdisp = part.getheader("content-disposition"); string[] items = contentdisp.split(";"); for (string s : items) { if (s.trim().startswith("filename")) { return s.substring(s.indexof("=") + 2, s.length()-1); } } return ""; } }
其中,request.getparts()用来获取multipart,其中就包括文件。其他<input type="text">参数由@requestparam map<string, object> p接收。
第四步:form表单提交文件以及其他数据:
<html> <head> <meta charset="utf-8"> <link href="../resources/css/common.css" rel="external nofollow" rel="stylesheet" /> <script src="../resources/js/jquery-2.1.4.js"></script> </head> <body> <h2>file upload</h2> <form method="post" enctype="multipart/form-data"> <input type="text" name="aaa"/><br/> 选择要上传的文件:<input type="file" name="file" size="60" /><br/> <input type="file" name="file" size="60" /><br/> <br/> <!-- <input type="submit" value="开始上传" /> --> </form> <input type="button" value="上传吧" onclick="upload()"/> </body> <script> function upload(){ $("form").attr('action', "http://localhost:8080/myjavastudio/servlet/file/upload"); $("form").submit(); } </script> </html>
注:通过jquery来submit表单,以*拼装action url,*定义提交按钮。
github:https://github.com/xujijun/myjavastudio
完整代码下载:myjavastudio_jb51.rar
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
上一篇: Java实现字符串倒序输出的常用方法小结
下一篇: 一款超酷的Android自定义加载控件
推荐阅读
-
SpringMVC + servlet3.0 文件上传的配置和实现代码
-
SpringMVC结合ajaxfileupload实现文件无刷新上传代码
-
C#实现Web文件上传的两种方法实例代码
-
asp.net实现上传文件显示本地绝对路径的实例代码
-
webuploader在springMVC+jquery+Java开发环境下的大文件分片上传的实例代码
-
SpringMVC结合ajaxfileupload实现文件无刷新上传代码
-
SpringMVC框架实现上传图片的示例代码
-
JavaWeb 文件的上传和下载功能简单实现代码
-
Struts2 文件上传进度条的实现实例代码
-
SpringMVC实现文件的上传和下载实例代码