使用WebUploader跨域上传图片,用SpringMVC实现服务器端

使用WebUploader实现跨域上传图片,当点击上传时,客户端会向服务器端先后发送两次请求,第一次是OPTIONS请求,用来验证服务器端是否允许跨域上传,当服务器允许跨域并正常返回时,WebUploader才会去发送第二次请求,也就是真正的图片上传的POST请求。

如果使用原生的Servlet来处理请求,直接重写OPTIONS方法和POST方法即可,但是SpringMVC默认禁用了OPTIONS请求,需要在初始化SpringMVC的核心控制器DispatcherServlet时指定初始化参数,来开启OPTIONS请求。

【配置如下】

<!-- 开启 SpringMVC对OPTIONS请求的支持-->
<init-param>
   <param-name>dispatchOptionsRequest</param-name>
   <param-value>true</param-value>
</init-param>

然后后台Controller可以这么写

//处理第一次OPTIONS验证请求
@RequestMapping(value="/webUploader", method = RequestMethod.OPTIONS)
public void webUploader(HttpServletRequest request, HttpServletResponse response) throws IOException {
    response.setHeader("Access-Control-Allow-Credentials", "false");
    response.setHeader("Access-Control-Allow-Origin", "*"); //生产环境绝对不允许设置为“*”
    response.setHeader("Access-Control-Allow-Methods", "*");
    response.setHeader("Access-Control-Allow-Headers", "x-requested-with,content-type");
    response.setContentType("application/json");
    response.setCharacterEncoding("utf-8");
}

//处理第二次POST上传请求
@RequestMapping(value="/webUploader", method = RequestMethod.POST)
@ResponseBody
public String webUploaderFile(HttpServletRequest request, HttpServletResponse response, MultipartFile file) throws IOException {
    response.setHeader("Access-Control-Allow-Origin", "*"); //生产环境绝对不允许设置为“*”
    response.setHeader("Access-Control-Allow-Methods", "*");
    response.setHeader("Access-Control-Allow-Headers", "x-requested-with,content-type");
    response.setContentType("application/json");
    response.setCharacterEncoding("utf-8");
    //图片上传逻辑,返回图片存放链接
    return uploadUtils.upload(file, "picture", "user");
}

对文章有疑问或者想获取更多技术文章,欢迎关注微信公众号:程序猿洞穴

这里写图片描述

假想网 - 未来,属于会做梦的人。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值