增加文件上传功能

This commit is contained in:
暮光:城中城
2018-12-26 22:34:20 +08:00
parent b7c72cf38b
commit 09d077cb07
9 changed files with 219 additions and 105 deletions

View File

@@ -52,14 +52,13 @@ public class MgDocumentController {
*/
@ResponseBody
@PostMapping(value = "/resourcesList")
public ResponseJson<Set<SwaggerResourcesInfoVo>> resourcesList() {
public ResponseJson<List<SwaggerResourcesInfoVo>> resourcesList() {
String swaggerResourcesStr = storageService.get(StorageKeys.SWAGGER_RESOURCES_LIST);
Set<SwaggerResourcesInfoVo> resourcesSet = new HashSet<>();
List<SwaggerResourcesInfoVo> resourcesList = new LinkedList<>();
if (StringUtils.isNotBlank(swaggerResourcesStr)) {
List<SwaggerResourcesInfoVo> resourcesList = JSON.parseArray(swaggerResourcesStr, SwaggerResourcesInfoVo.class);
resourcesSet.addAll(resourcesList);
resourcesList = JSON.parseArray(swaggerResourcesStr, SwaggerResourcesInfoVo.class);
}
return DocResponseJson.ok(resourcesSet);
return DocResponseJson.ok(resourcesList);
}
/**

View File

@@ -1,60 +1,56 @@
package com.zyplayer.doc.swagger.controller;
import java.net.HttpCookie;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.stream.Collectors;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.zyplayer.doc.core.json.DocResponseJson;
import com.zyplayer.doc.swagger.controller.param.HttpRequestParam;
import com.zyplayer.doc.swagger.controller.vo.HttpCookieVo;
import com.zyplayer.doc.swagger.controller.vo.HttpHeaderVo;
import com.zyplayer.doc.swagger.controller.vo.HttpRequestVo;
import cn.hutool.http.HttpRequest;
import cn.hutool.http.HttpResponse;
/**
* 后台代理网络请求的控制器
*
* @author 暮光:城中城
* @since 2018年8月21日
*/
@RestController
@RequestMapping("/swagger-mg-ui/http")
public class MgHttpRequestController {
@PostMapping(value = "/request")
public DocResponseJson<HttpRequestVo> post(HttpRequestParam param) {
HttpRequest request = param.createRequest();
HttpResponse response = request.execute();
HttpRequestVo httpRequestVo = new HttpRequestVo();
httpRequestVo.setData(response.body());
httpRequestVo.setStatus(response.getStatus());
List<HttpCookie> cookies = response.getCookies();
if (cookies != null && cookies.size() > 0) {
List<HttpCookieVo> cookie = cookies.stream().map(val -> {
return new HttpCookieVo(val.getName(), val.getValue());
}).collect(Collectors.toList());
httpRequestVo.setCookie(cookie);
}
Map<String, List<String>> headers = response.headers();
if (headers != null && headers.size() > 0) {
List<HttpHeaderVo> header = new ArrayList<>(headers.size());
for (Entry<String, List<String>> httpHeader : headers.entrySet()) {
HttpHeaderVo vo = new HttpHeaderVo();
vo.setName(httpHeader.getKey());
vo.setValue(String.join(";", httpHeader.getValue()));
header.add(vo);
}
httpRequestVo.setHeader(header);
}
return DocResponseJson.ok(httpRequestVo);
}
}
package com.zyplayer.doc.swagger.controller;
import cn.hutool.http.HttpRequest;
import cn.hutool.http.HttpResponse;
import com.zyplayer.doc.core.json.DocResponseJson;
import com.zyplayer.doc.swagger.controller.param.HttpRequestParam;
import com.zyplayer.doc.swagger.controller.vo.HttpCookieVo;
import com.zyplayer.doc.swagger.controller.vo.HttpHeaderVo;
import com.zyplayer.doc.swagger.controller.vo.HttpRequestVo;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.net.HttpCookie;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.stream.Collectors;
/**
* 后台代理网络请求的控制器
*
* @author 暮光:城中城
* @since 2018年8月21日
*/
@RestController
@RequestMapping("/swagger-mg-ui/http")
public class MgHttpRequestController {
@PostMapping(value = "/request")
public DocResponseJson<HttpRequestVo> post(HttpRequestParam param) {
HttpRequest request = param.createRequest();
HttpResponse response = request.execute();
HttpRequestVo httpRequestVo = new HttpRequestVo();
httpRequestVo.setData(response.body());
httpRequestVo.setStatus(response.getStatus());
List<HttpCookie> cookies = response.getCookies();
if (cookies != null && cookies.size() > 0) {
List<HttpCookieVo> cookie = cookies.stream().map(val -> new HttpCookieVo(val.getName(), val.getValue())).collect(Collectors.toList());
httpRequestVo.setCookie(cookie);
}
Map<String, List<String>> headers = response.headers();
if (headers != null && headers.size() > 0) {
List<HttpHeaderVo> header = new ArrayList<>(headers.size());
for (Entry<String, List<String>> httpHeader : headers.entrySet()) {
HttpHeaderVo vo = new HttpHeaderVo();
vo.setName(httpHeader.getKey());
vo.setValue(String.join(";", httpHeader.getValue()));
header.add(vo);
}
httpRequestVo.setHeader(header);
}
return DocResponseJson.ok(httpRequestVo);
}
}

View File

@@ -1,8 +1,15 @@
package com.zyplayer.doc.swagger.controller.param;
import java.io.File;
import java.io.IOException;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import cn.hutool.core.io.FileUtil;
import cn.hutool.core.io.resource.BytesResource;
import cn.hutool.core.io.resource.MultiFileResource;
import org.apache.commons.lang.StringUtils;
import com.alibaba.fastjson.JSON;
@@ -10,6 +17,7 @@ import com.alibaba.fastjson.TypeReference;
import cn.hutool.http.HttpRequest;
import cn.hutool.http.Method;
import org.springframework.web.multipart.MultipartFile;
/**
* 请求参数对象
@@ -23,6 +31,8 @@ public class HttpRequestParam {
private String header;
private String form;
private String body;
private String[] fileNames;
private MultipartFile[] files;
public String getUrl() {
return url;
@@ -84,6 +94,28 @@ public class HttpRequestParam {
if (formMap != null) {
request.form(formMap);
}
// 拼文件
if (this.getFiles() != null && this.getFiles().length > 0) {
Map<String, MultiFileResource> bytesResourceMap = new HashMap<>();
for (int i = 0; i < this.getFiles().length; i++) {
try {
String fileName = this.getFileNames()[i].replace("[", "").replace("]", "");
MultipartFile file = this.getFiles()[i];
BytesResource bytesResource = new BytesResource(file.getBytes(), file.getOriginalFilename());
MultiFileResource multiFileResource = bytesResourceMap.get(fileName);
if (multiFileResource == null) {
multiFileResource = new MultiFileResource();
}
multiFileResource.add(bytesResource);
bytesResourceMap.put(fileName, multiFileResource);
} catch (Exception e) {
e.printStackTrace();
}
}
for (Map.Entry<String, MultiFileResource> entry : bytesResourceMap.entrySet()) {
request.form(entry.getKey(), entry.getValue());
}
}
if (StringUtils.isNotBlank(body) && request.getMethod() != Method.GET) {
request.body(body);
}
@@ -192,5 +224,20 @@ public class HttpRequestParam {
public void setMethod(String method) {
this.method = method;
}
public MultipartFile[] getFiles() {
return files;
}
public void setFiles(MultipartFile[] files) {
this.files = files;
}
public String[] getFileNames() {
return fileNames;
}
public void setFileNames(String[] fileNames) {
this.fileNames = fileNames;
}
}