서버 간 파일 업로드
public class HttpUploadFileUtil {
public static String uploadFile(String url,Map map) {
String result = "";
String fileType = map.get("fileType");
String filePath = map.get("filePath");
String fileName = map.get("fileName");
OkHttpClient client = new OkHttpClient();
MultipartBody.Builder builder= new MultipartBody.Builder().setType(MultipartBody.FORM);
for(String key : map.keySet()){
if(!key.equals("fileType")&&!key.equals("filePath")&&!key.equals("fileName")){
builder.addFormDataPart(key,map.get(key));
}
}
builder.addPart( Headers.of("Content-Disposition", "form-data; name=\"file\";filename=\""+fileName+"\""),
RequestBody.create(MediaType.parse(fileType),new File(filePath))
).build();
RequestBody body=builder.build();
Request request = new Request.Builder().url(url).post(body).build();
try {
Response response = client.newCall(request).execute();
result=response.body().string();
System.out.println(response.body().string());
} catch (IOException e) {
e.printStackTrace();
}finally{
return result;
}
}
}
파일 수신 코드
@RequestMapping("/uploadFile")
@ResponseBody
public void uploadFile(HttpServletRequest req, HttpServletResponse resp) throws IOException {
MultipartHttpServletRequest multipartRequest =(MultipartHttpServletRequest)req;
Integer sysId = req.getParameter("sysId") == null? 0 : Integer.parseInt(req.getParameter("sysId"));
String userGuid = req.getParameter("userGuid") == null ? "" : req.getParameter("userGuid");
String otherInfo = req.getParameter("otherInfo") == null ? "" : req.getParameter("otherInfo");
String userName = req.getParameter("userName") == null ? "" : req.getParameter("userName");
String video = req.getParameter("isSupportVideo") == null ? "" :req.getParameter("isSupportVideo");
String fileGuid = req.getParameter("fileId") == null ? "" :req.getParameter("fileId");
String fileName = req.getParameter("fileName") == null ? "" :req.getParameter("fileName");
Boolean isSupportVideo = false;
if(StringUtils.isNotBlank(video)){
isSupportVideo = true;
}
resp.setContentType("text/json; charset=utf-8");
BufferedOutputStream outputStream = null;
if (!ServletFileUpload.isMultipartContent(req)) {
resp.getWriter().write("{\"message\":\" \"}");
return;
}
InetAddress addr = OperateUtil.getLoaclIP();
String ip=addr.getHostAddress().toString();// IP
try{
MultipartFile file=multipartRequest.getFile("file");
SysFileCatalog catalog = sysFileCatalogService.queryByIpAndType(ip , isSupportVideo ? MuLuType.VIDEOFILE.getCode() : MuLuType.FILEROOT.getCode());//2.
System.out.println("fileGuid-start="+fileGuid);
if (StringUtils.isBlank(fileGuid)) {
fileGuid = UUID.randomUUID().toString();
}
System.out.println("fileGuid-end="+fileGuid);
File up = new File(FileUtil.parsePath(catalog.getCatalogPath() , fileGuid));
if (!up.exists()) {
up.mkdirs();
}
//
File savedFile = new File(FileUtil.parsePath(catalog.getCatalogPath() , fileGuid) , fileGuid + fileName.substring(fileName.lastIndexOf(".")));
System.out.println("filePath="+savedFile.getPath());
//
file.transferTo(savedFile);
Long fileSize=file.getSize();
String fileMd5 = FileUtil.getMD5Checksum(FileUtil.parsePath(catalog.getCatalogPath() , fileGuid) + "/" + fileGuid + fileName.substring(fileName.lastIndexOf(".")));
SysFile entity = new SysFile(fileGuid , fileMd5 , sysId , userGuid , catalog.getCatalogId() , fileName , fileName.substring(fileName.lastIndexOf(".")) , fileSize , System.currentTimeMillis() , 1 , otherInfo , userName);
SysFile fileTemp = sysFileService.queryById(entity.getFileGuid());
if (fileTemp == null) {
sysFileService.save(entity);
} else {
sysFileService.update(entity);
}
resp.getWriter().write("{\"status\":true,\"fileName\":\"" + fileName + "\",\"fileGuid\":\"" + fileGuid + "\",\"fileMd5\":\"" + fileMd5 + "\",\"uploadTime\":\"" + entity.getCreateTime() + "\",\"fileLength\":\"" + entity.getFileLength() + "\"}");
}catch(Exception e){
e.printStackTrace();
if(e!=null){
Logger loger=Logger.getLogger(FileController.class);
loger.error(e.getMessage());
}
resp.getWriter().write("{\"status\":false}");
}
}
MultipartHttpServletRequest를 사용하려면 구성을 추가해야 합니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
반사를 통해 객체 작성반사를 통해 객체를 작성하는 두 가지 방법 1. Class 바이트 객체 newInstance()를 통과합니다.(기본적으로 참조 없음으로 생성됨) 2. 구조기 getConstructor(Class>.parameterT...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.