Tue May 2 12:27:00 UTC 2023 inscode

上级 5b0ce43e
package com.example.springdemo.aspect;
import org.apache.tomcat.util.http.MimeHeaders;
import org.springframework.util.StringUtils;
import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
import java.lang.reflect.Field;
import java.util.HashMap;
import java.util.Map;
@WebFilter
public class AuthHeaderSettingFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
Filter.super.init(filterConfig);
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
HttpServletRequest req = (HttpServletRequest) servletRequest;
String type = req.getContentType();
if(!StringUtils.isEmpty(type)){
Map<String, String> map = new HashMap<>();
map.put("Content-Type","image/jpeg");
modifyHeaders(map,req);
}
String content = req.getContentType();
filterChain.doFilter(servletRequest,servletResponse);
}
@Override
public void destroy() {
Filter.super.destroy();
}
private void modifyHeaders(Map<String, String> headerses, HttpServletRequest request){
if (headerses == null || headerses.isEmpty()) {
return;
}
Class<? extends HttpServletRequest> requestClass = request.getClass();
try {
Field requestFlied = requestClass.getDeclaredField("request");
requestFlied.setAccessible(true);
Object reqObject = requestFlied.get(request);
Field coyoteRequest = reqObject.getClass().getDeclaredField("coyoteRequest");
coyoteRequest.setAccessible(true);
Object coyoteObject = coyoteRequest.get(reqObject);
Field headers = coyoteObject.getClass().getDeclaredField("headers");
headers.setAccessible(true);
MimeHeaders header = (MimeHeaders)headers.get(coyoteObject);
for (Map.Entry<String, String> entry : headerses.entrySet()) {
header.removeHeader(entry.getKey());
header.addValue(entry.getKey()).setString(entry.getValue());
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
package com.example.springdemo.config;
import com.example.springdemo.aspect.AuthHeaderSettingFilter;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class FilterConfig {
@Bean
public FilterRegistrationBean modifyParametersFilter() {
FilterRegistrationBean registration = new FilterRegistrationBean();
registration.setFilter(new AuthHeaderSettingFilter());
registration.addUrlPatterns("/*");
registration.setName("authHeaderSettingFilter");
registration.setOrder(1);
return registration;
}
}
\ No newline at end of file
package com.example.springdemo.controller;
import com.example.springdemo.bean.Car;
import lombok.extern.slf4j.Slf4j;
import org.apache.catalina.connector.Response;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import java.io.*;
import java.util.Map;
@Slf4j
@RestController
public class HelloController {
final Car car;
public HelloController(Car car) {
this.car = car;
}
/**
* application/octet-stream 形式上传图片
*
* @param bytes 图片数据
* @return success
*/
@RequestMapping(value = "/uploadFile", method = RequestMethod.POST)
public String getPicFile(@RequestBody byte[] bytes, HttpServletRequest request) {
log.info("this image name is [{}]", request.getContentType());
try (FileOutputStream fileOuputStream = new FileOutputStream("image.jpg")){
fileOuputStream.write(bytes);
log.info("save image success");
} catch (IOException e) {
throw new RuntimeException(e);
}
return "SUCCESS";
}
/**
* image/jpeg 形式上传图片
*
* @param bytes 图片字节流
* @param request 请求
* @return 200ok
*/
@RequestMapping(value = "/vi/snap/uploadFile", method = RequestMethod.POST)
public int getImage(@RequestBody byte[] bytes, HttpServletRequest request) {
log.info("ContentType : {}", request.getContentType());
try (FileOutputStream fileOuputStream = new FileOutputStream("snap.jpg")){
fileOuputStream.write(bytes);
log.info("save snap image success");
} catch (IOException e) {
throw new RuntimeException(e);
}
return Response.SC_OK;
}
/**
* hashMap 转化成表单字符串
*
* @param map 图片数据
* @return 字符串
*/
public static String map2Form(Map<String, Object> map) {
StringBuilder stringBuilder = new StringBuilder();
if (map == null) {
return stringBuilder.toString();
} else {
for (Map.Entry<String, Object> entry : map.entrySet()) {
stringBuilder.append(entry.getKey()).append("=").append(entry.getValue()).append("&");
}
return stringBuilder.substring(0, stringBuilder.length() - 1);
}
}
@RequestMapping("/hello")
public String hello(@RequestParam(value = "name", defaultValue = "World") String name) {
return String.format("Hello, %s!", name);
}
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册