增加单独文件上传
							parent
							
								
									74a1fa026d
								
							
						
					
					
						commit
						c42819d9a3
					
				| @ -0,0 +1,49 @@ | ||||
| package com.glxp.api.idc.controller; | ||||
| 
 | ||||
| import java.util.Map; | ||||
| 
 | ||||
| import javax.annotation.Resource; | ||||
| import javax.servlet.http.HttpServletRequest; | ||||
| 
 | ||||
| import org.springframework.web.bind.annotation.RequestBody; | ||||
| import org.springframework.web.bind.annotation.RequestMapping; | ||||
| import org.springframework.web.bind.annotation.RequestParam; | ||||
| import org.springframework.web.bind.annotation.ResponseBody; | ||||
| import org.springframework.web.bind.annotation.RestController; | ||||
| import org.springframework.web.multipart.MultipartFile; | ||||
| 
 | ||||
| import com.glxp.api.common.res.BaseResponse; | ||||
| import com.glxp.api.idc.service.FileService; | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| /** | ||||
|  * 中继服务接口 | ||||
|  */ | ||||
| 
 | ||||
| @RestController | ||||
| public class FileController { | ||||
|     @Resource | ||||
|     FileService fileService; | ||||
| 
 | ||||
|     @RequestMapping(value = "/spssync/file/upload") | ||||
|     @ResponseBody | ||||
|     public BaseResponse connect(HttpServletRequest request, @RequestBody Map<String, Object> params) { | ||||
|         return fileService.fileUpload(request,params); | ||||
|     } | ||||
|     | ||||
|      | ||||
|     @RequestMapping(value = "/spssync/file/uploadFile") | ||||
|     public BaseResponse uploadFile(HttpServletRequest request, | ||||
|                                @RequestParam(value = "content" , required = false) String content, | ||||
|                                @RequestParam(value = "files", required = false) MultipartFile[] files) { | ||||
|         //
 | ||||
|         return fileService.receiveFile(request, content, files); | ||||
|     } | ||||
| 
 | ||||
|      | ||||
|      | ||||
| 
 | ||||
| } | ||||
| @ -0,0 +1,16 @@ | ||||
| package com.glxp.api.idc.service; | ||||
| 
 | ||||
| import java.util.Map; | ||||
| 
 | ||||
| import javax.servlet.http.HttpServletRequest; | ||||
| 
 | ||||
| import org.springframework.web.multipart.MultipartFile; | ||||
| 
 | ||||
| import com.glxp.api.common.res.BaseResponse; | ||||
| 
 | ||||
| 
 | ||||
| /*文件服务*/ | ||||
| public interface FileService { | ||||
|     BaseResponse fileUpload(HttpServletRequest request,Map<String,Object> params); | ||||
|     BaseResponse receiveFile(HttpServletRequest request,String content,MultipartFile[] files); | ||||
| } | ||||
| @ -0,0 +1,193 @@ | ||||
| package com.glxp.api.idc.service.impl; | ||||
| 
 | ||||
| import java.io.File; | ||||
| import java.io.IOException; | ||||
| import java.util.ArrayList; | ||||
| import java.util.Date; | ||||
| import java.util.Map; | ||||
| import java.util.concurrent.TimeUnit; | ||||
| 
 | ||||
| import javax.annotation.Resource; | ||||
| import javax.servlet.http.HttpServletRequest; | ||||
| 
 | ||||
| import org.apache.commons.lang3.StringUtils; | ||||
| import org.apache.tools.ant.util.DateUtils; | ||||
| import org.slf4j.Logger; | ||||
| import org.slf4j.LoggerFactory; | ||||
| import org.springframework.beans.factory.annotation.Value; | ||||
| import org.springframework.stereotype.Service; | ||||
| import org.springframework.web.multipart.MultipartFile; | ||||
| 
 | ||||
| import com.alibaba.fastjson.JSON; | ||||
| import com.glxp.api.common.res.BaseResponse; | ||||
| import com.glxp.api.common.util.ResultVOUtils; | ||||
| import com.glxp.api.dao.idc.DbDao; | ||||
| import com.glxp.api.idc.service.FileService; | ||||
| import com.glxp.api.idc.utils.IDCUtils; | ||||
| import com.glxp.api.util.FileUtils; | ||||
| 
 | ||||
| import okhttp3.MediaType; | ||||
| import okhttp3.MultipartBody; | ||||
| import okhttp3.OkHttpClient; | ||||
| import okhttp3.Request; | ||||
| import okhttp3.RequestBody; | ||||
| import okhttp3.Response; | ||||
| 
 | ||||
| 
 | ||||
| /*连通检测*/ | ||||
| @Service | ||||
| public class FileServiceImpl implements FileService { | ||||
|     private static final Logger logger = LoggerFactory.getLogger(FileServiceImpl.class); | ||||
|     @Value("${file_path}") | ||||
|     private String filePath; | ||||
|     @Value("${API_KEY}") | ||||
|     private String apiKey; | ||||
|     @Value("${API_SECRET}") | ||||
|     private String apiSecret; | ||||
|      | ||||
|     @Resource | ||||
|     private DbDao dbDao; | ||||
|     private String imagePath = "register/file/image2/"; | ||||
|     @Override | ||||
|     public BaseResponse fileUpload(HttpServletRequest request,Map<String,Object> params) { | ||||
|         String host=""; | ||||
|         try { | ||||
|             Map<String, Object> map = dbDao.get("select * from sync_data_set limit 1"); | ||||
|             if(map!=null&&map.get("syncIp")!=null) | ||||
|                 host = map.get("syncIp").toString(); | ||||
|         } catch (Exception ex) { | ||||
|              | ||||
|         } | ||||
|         if(StringUtils.isEmpty(host)) { | ||||
|             try { | ||||
|                 Map<String,Object> config =dbDao.get("select paramValue from system_param_config where paramKey='upper_server_ip'"); | ||||
|                 if(config!=null&&config.get("paramValue")!=null) | ||||
|                     host = config.get("paramValue").toString(); | ||||
|             } catch (Exception ex) { | ||||
|                  | ||||
|             } | ||||
|         } | ||||
|         if(StringUtils.isEmpty(host)) | ||||
|             return ResultVOUtils.error(9999,"上传地址未配置,请至同步设置中进行设置"); | ||||
|         if(params.get("fileName")!=null) { | ||||
|             String fileName = params.get("fileName").toString(); | ||||
|             String[] strs = fileName.split(","); | ||||
|             String filePathSlash = filePath.substring(filePath.length() - 1).equals("/") ? "" : "/"; | ||||
|             ArrayList<String> files = new ArrayList<>(); | ||||
|             boolean isExists = true; | ||||
|             for(String str:strs) { | ||||
|                 if (!StringUtils.isEmpty(str) && FileUtils.isFileExist(filePath + filePathSlash + imagePath + str)) { | ||||
|                     files.add(filePath + filePathSlash + imagePath + str); | ||||
|                 } else { | ||||
|                     isExists = false; | ||||
|                 } | ||||
|             } | ||||
|             if(!isExists) | ||||
|                 return ResultVOUtils.error(9999,"文件不存在"); | ||||
|             String result = relayFile(files,host); | ||||
|             if (IDCUtils.isJson(result)) { | ||||
|                 BaseResponse baseResponse = JSON.parseObject(result,BaseResponse.class); | ||||
|                 return baseResponse; | ||||
|             } | ||||
|         } | ||||
|         return ResultVOUtils.error(9999,"失败"); | ||||
|     } | ||||
|      | ||||
|     @Override | ||||
|     public BaseResponse receiveFile(HttpServletRequest request,String content,MultipartFile[] files) { | ||||
|         boolean isRelay = false; | ||||
|         String filePathSlash = filePath.substring(filePath.length() - 1).equals("/") ? "" : "/"; | ||||
|         String host = ""; | ||||
|         try { | ||||
|             Map<String,Object> config =dbDao.get("select paramValue from system_param_config where paramKey='upper_server_ip'"); | ||||
|             if(config!=null&&config.get("paramValue")!=null) { | ||||
|                 isRelay = true; | ||||
|                 host = config.get("paramValue").toString(); | ||||
|             } | ||||
|                  | ||||
|         } catch (Exception ex) { | ||||
|              | ||||
|         } | ||||
|         ArrayList<String> saveFiles = new ArrayList<>(); | ||||
|         Date startTime = new Date(); | ||||
|         if (files != null) { | ||||
|             try { | ||||
|                 for (MultipartFile file : files) { | ||||
|                     String imageName = filePath + filePathSlash + imagePath + file.getOriginalFilename(); | ||||
|                     saveFiles.add(imageName); | ||||
|                     IDCUtils.writeFile(file.getBytes(), filePath + filePathSlash + imagePath, file.getOriginalFilename()); | ||||
|                  } | ||||
|             } catch (IOException e) { | ||||
|                 // TODO Auto-generated catch block
 | ||||
|                 e.printStackTrace(); | ||||
|             } catch (Exception e) { | ||||
|                 // TODO Auto-generated catch block
 | ||||
|                 e.printStackTrace(); | ||||
|             } | ||||
| 
 | ||||
|         } | ||||
| 
 | ||||
|         if(isRelay) { | ||||
|             String result = relayFile(saveFiles,host); | ||||
|             if (IDCUtils.isJson(result)) { | ||||
|                 BaseResponse baseResponse = JSON.parseObject(result,BaseResponse.class); | ||||
|                 return baseResponse; | ||||
|             } | ||||
|         } | ||||
|         return ResultVOUtils.success(null); | ||||
|     } | ||||
|      | ||||
|     /*转发图片*/ | ||||
|     private String relayFile(ArrayList<String> files, String ip) { | ||||
|         String host = ip; | ||||
|         String result = ""; | ||||
|         | ||||
|         if (!StringUtils.isEmpty(host)) { | ||||
|             host += "/spssync/file/uploadFile"; | ||||
|             OkHttpClient client = new OkHttpClient().newBuilder() | ||||
|                     .connectTimeout(30, TimeUnit.SECONDS)//设置连接超时时间
 | ||||
|                     .readTimeout(30, TimeUnit.SECONDS)//设置读取超时时间
 | ||||
|                     .build(); | ||||
|             MediaType mediaType = MediaType.parse("application/x-www-form-urlencoded"); | ||||
| 
 | ||||
|             MultipartBody.Builder builder = new MultipartBody.Builder(); | ||||
|             builder.setType(MultipartBody.FORM); | ||||
|             String fileType = "application/octet-stream"; | ||||
|             if (files != null && files.size() > 0) { | ||||
|                 for (int i = 0; i < files.size(); i++) { | ||||
|                     if (!StringUtils.isEmpty(files.get(i))) { | ||||
|                         File file = new File(files.get(i)); | ||||
|                         builder.addFormDataPart("files", files.get(i), | ||||
|                                 RequestBody.create(MediaType.parse(fileType), file)); | ||||
|                     } | ||||
|                 } | ||||
|             } | ||||
|            | ||||
|             RequestBody body = builder.build(); | ||||
| 
 | ||||
|             Request req = new Request.Builder() | ||||
|                     .url(host) | ||||
|                     .method("POST", body) | ||||
|                     .addHeader("Content-Type", "application/x-www-form-urlencoded") | ||||
|                     .addHeader("format", "json") | ||||
|                     .addHeader("apiKey", apiKey) | ||||
|                     .addHeader("secretKey", apiSecret) | ||||
|                     .addHeader("timestamp", DateUtils.format(new Date(), "yyyy-MM-dd HH:mm:ss")) | ||||
|                     .addHeader("Access-Control-Allow-Headers", "Authorization, Origin, X-Requested-With, Content-Type, Accept") | ||||
|                     .build(); | ||||
|             try { | ||||
|                 Response response = client.newCall(req).execute(); | ||||
|                 result = response.body().string(); | ||||
|                 logger.info("result--->" + result); | ||||
|             } catch (IOException e) { | ||||
|                 // TODO Auto-generated catch block
 | ||||
|                 e.printStackTrace(); | ||||
|             } | ||||
| 
 | ||||
|         } else { | ||||
|             logger.debug("未配置中继服务地址"); | ||||
|         } | ||||
|         return result; | ||||
|     } | ||||
|      | ||||
| } | ||||
					Loading…
					
					
				
		Reference in New Issue