栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

通过HTTP PUT请求上传文件

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

通过HTTP PUT请求上传文件

让Spring正确响应HTTP PUT方法的文件上载请求是相当轻松的。

它所要做的就是重写自定义的MultipartResolver类中的isMultipart()方法。

import org.apache.commons.fileupload.FileUploadbase;import org.apache.commons.fileupload.servlet.ServletRequestContext;import javax.servlet.http.HttpServletRequest;public class PostAndPutCommonsMultipartResolver extends CommonsMultipartResolver {    private static final String POST_METHOD = "POST";    private static final String PUT_METHOD = "PUT";    @Override    public boolean isMultipart(HttpServletRequest request) {        boolean isMultipartRequest = false;        if (request != null) { if (POST_METHOD.equalsIgnoreCase(request.getMethod()) || PUT_METHOD.equalsIgnoreCase(request.getMethod())) {     isMultipartRequest = FileUploadbase.isMultipartContent(new ServletRequestContext(request)); }        }        return isMultipartRequest;    }}

真正重要的是扩展了默认的MultipartResolver,以便isMultipart()方法将为POST或PUT请求返回true。

通常,有两个默认的MultipartResolver实现:
CommonsMultipartResolver(与Apache
Commons
FileUpload一起使用)和StandardServletMultipartResolver(与Servlet
3.0+ Part API一起使用)。

由于我们使用的是Apache Commons
FileUpload,因此我们扩展了CommonsMultipartResolver类。

MultipartResolver的Javadoc页面上有文档,解释了如何为您的应用程序正确定义自定义的MultipartResolver(添加了重点):

Spring DispatcherServlets没有默认的解析器实现
,因为应用程序可能会选择自己解析其多部分请求。要定义实现,请在DispatcherServlet的应用程序上下文中创建一个ID为“
multipartResolver”的bean。这样的解析器将应用于该DispatcherServlet处理的所有请求。

对于配置了xml的应用程序,它将看起来接近以下内容:

<bean id="multipartResolver" />

对于配置了注释的应用程序,它将看起来与以下内容接近:

@Bean(name = "multipartResolver")public CommonsMultipartResolver createMultipartResolver() {    return new PostAndPutCommonsMultipartResolver();}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/573368.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号