JAVA Server上传文件 Spring MultipartResolver 或者 ServletFileUpload
2017-12-28 11:16
471 查看
转载自http://blog.csdn.net/cctt_1/article/details/8800964
如果想上传文件,那么有两种方法可以解决。一种使用Spring框架中的东西。另外一种是使用原生的代码。
使用Spring框架非常简单。将如下xml放入到servlet.xml中。
[html] view plain copy print?<bean id=“multipartResolver”
class=“org.springframework.web.multipart.commons.CommonsMultipartResolver”>
<property name=“maxUploadSize”
value=“20000000” />
<!– 上传限制 20M –>
然后在代码中这样写:
[java] view plain copy print?@RequestMapping(value = “upload”, method = RequestMethod.POST)
public void upload(HttpServletRequest req, HttpServletResponse response,
@RequestParam(value=“file”, required=true) MultipartFile file,
)
&nb
4000
sp; throws IOException {
// 1. upload file, 获取bytes内容
ByteArrayOutputStream bytes = new ByteArrayOutputStream();
IOUtils.copy(file.getInputStream(), bytes);
byte[] byteArray = bytes.toByteArray();}
<label>上传文件 </label><br/>
<input type=“file” name=“file” size=“100” style=“width:300px;” /> <br />
<input type=“submit” name=“submit” value=“submit”/>
</form>
这样写完后,就可以上传一个不超过20M的文件了。
第二种方式不使用Spring框架。代码稍微复杂一些。HTML同上。但是没有那段XML内容。JAVA代码需要改为:
[java] view plain copy print?@RequestMapping(value = “upload”, method = RequestMethod.POST)
public void upload(HttpServletRequest req, HttpServletResponse resp
) throws ServletException, IOException, FileUploadException,
{
boolean isMultipart = ServletFileUpload.isMultipartContent(req);
HashMap<String, String> request = new HashMap<String, String>();
if (isMultipart) {
DiskFileItemFactory factory = new DiskFileItemFactory(1024 * 1024 * 20, null);
ServletFileUpload upload = new ServletFileUpload(factory);
upload.setHeaderEncoding(”UTF-8”);
upload.setSizeMax(1024 * 1024 * 20);
List<FileItem> fileItems = upload.parseRequest(req);
Iterator<FileItem> iter = fileItems.iterator();
while (iter.hasNext()) {
FileItem item = (FileItem) iter.next();
if (item.isFormField()) {
String name = item.getFieldName();
String value = item.getString(”UTF-8”);
request.put(name, value);
} else {
byte[] filebytes = item.get();
if (StringUtils.isBlank(item.getName())) {
continue;
}
request.put(item.getFieldName(), new String(filebyte, “utf-8”));
}
}
}
}
但是这两者不能同时使用,否则会有冲突。下一篇将介绍如何解决两者之间的冲突。
如果想上传文件,那么有两种方法可以解决。一种使用Spring框架中的东西。另外一种是使用原生的代码。
使用Spring框架非常简单。将如下xml放入到servlet.xml中。
[html] view plain copy print?<bean id=“multipartResolver”
class=“org.springframework.web.multipart.commons.CommonsMultipartResolver”>
<property name=“maxUploadSize”
value=“20000000” />
<!– 上传限制 20M –>
然后在代码中这样写:
[java] view plain copy print?@RequestMapping(value = “upload”, method = RequestMethod.POST)
public void upload(HttpServletRequest req, HttpServletResponse response,
@RequestParam(value=“file”, required=true) MultipartFile file,
)
&nb
4000
sp; throws IOException {
// 1. upload file, 获取bytes内容
ByteArrayOutputStream bytes = new ByteArrayOutputStream();
IOUtils.copy(file.getInputStream(), bytes);
byte[] byteArray = bytes.toByteArray();}
@RequestMapping(value = "upload", method = RequestMethod.POST) public void upload(HttpServletRequest req, HttpServletResponse response, @RequestParam(value="file", required=true) MultipartFile file, ) throws IOException { // 1. upload file, 获取bytes内容 ByteArrayOutputStream bytes = new ByteArrayOutputStream(); IOUtils.copy(file.getInputStream(), bytes); byte[] byteArray = bytes.toByteArray();}Html上传页面这样写:[html] view plain copy print?<form name=“uploadForm” action=“upload” method=“POST” enctype=“multipart/form-data” >
<label>上传文件 </label><br/>
<input type=“file” name=“file” size=“100” style=“width:300px;” /> <br />
<input type=“submit” name=“submit” value=“submit”/>
</form>
这样写完后,就可以上传一个不超过20M的文件了。
第二种方式不使用Spring框架。代码稍微复杂一些。HTML同上。但是没有那段XML内容。JAVA代码需要改为:
[java] view plain copy print?@RequestMapping(value = “upload”, method = RequestMethod.POST)
public void upload(HttpServletRequest req, HttpServletResponse resp
) throws ServletException, IOException, FileUploadException,
{
boolean isMultipart = ServletFileUpload.isMultipartContent(req);
HashMap<String, String> request = new HashMap<String, String>();
if (isMultipart) {
DiskFileItemFactory factory = new DiskFileItemFactory(1024 * 1024 * 20, null);
ServletFileUpload upload = new ServletFileUpload(factory);
upload.setHeaderEncoding(”UTF-8”);
upload.setSizeMax(1024 * 1024 * 20);
List<FileItem> fileItems = upload.parseRequest(req);
Iterator<FileItem> iter = fileItems.iterator();
while (iter.hasNext()) {
FileItem item = (FileItem) iter.next();
if (item.isFormField()) {
String name = item.getFieldName();
String value = item.getString(”UTF-8”);
request.put(name, value);
} else {
byte[] filebytes = item.get();
if (StringUtils.isBlank(item.getName())) {
continue;
}
request.put(item.getFieldName(), new String(filebyte, “utf-8”));
}
}
}
}
但是这两者不能同时使用,否则会有冲突。下一篇将介绍如何解决两者之间的冲突。
相关文章推荐
- JAVA Server上传文件 Spring MultipartResolver 或者 ServletFileUpload
- Java-上传文件Spring MultipartResolver 或者 ServletFileUpload
- Spring中使用StandardServletMultipartResolver进行文件上传
- Spring中servletFileUpload完成上传文件以及文本的处理
- Using a MultipartResolver with Commons FileUpload[就是使用commons FileUpload上传文件]
- 异常-----springmvc + ajaxfileupload解决ajax不能异步上传图片的问题。java.lang.ClassCastException: org.apache.catalina.connector.RequestFacade cannot be cast to org.springframework.web.multipart.
- spring上传文件报错Expected MultipartHttpServletRequest: is a MultipartResolver configured?
- Spring Boot使用ServletFileUpload上传文件失败
- Spring Boot使用ServletFileUpload上传文件失败
- 遇到问题-----uploadify上传文件ServletFileUpload.isMultipartContent(request)为false
- MultipartHttpServletRequest,ajaxFileUpload上传文件,读取文件乱码问题
- DiskFileUpload上传与Spring的CommonsMultipartResolver上传对比
- SPRING IN ACTION 第4版笔记-第七章Advanced Spring MVC-003- 上传文件multipart,配置StandardServletMultipartResolver、CommonsMultipartResolver
- java /Spring /jsp 使用input标签 file 如何上传多个文件
- 文件上传和下载-ServletFileUpload and DiskFileItemFactory
- java jsp servlet fileupload上传图片时获取上传图片尺寸(宽高)的代码
- 上传文件出错:org.apache.commons.fileupload.FileUploadBase$IOFileUploadException: Processing of multipart/form-data request failed. Stream ended unexpectedly
- Spring中MultipartHttpServletRequest实现文件上传
- struts2 文件上传 和 ServletFileUpload的矛盾
- 使用Spring CommonsMultipartResolver 上传文件