@ApiOperation(value = "文件上传", notes = "文件上传")
@PostMapping("/uploadfile")
public void uploadFile(HttpServletRequest request, HttpServletResponse response) throws Exception{
//logger.debug(tClaimImage.getBatchid() + ":" + tClaimImage.getCaseid());
//response.setContentType("text/html;charset=UTF-8");
// 读取请求Body
byte[] body = readBody(request);
// 取得所有Body内容的字符串表示
String textBody = new String(body, "ISO-8859-1");
// 取得上传的文件名称
// String fileName = getFileName(textBody);
// 取得文件开始与结束位置
String contentType = request.getContentType();
String boundaryText = contentType.substring(contentType.lastIndexOf("=") + 1, contentType.length());
// 取得实际上传文件的起始与结束位置
int pos = textBody.indexOf("filename=\"");
pos = textBody.indexOf("\n", pos) + 1;
pos = textBody.indexOf("\n", pos) + 1;
pos = textBody.indexOf("\n", pos) + 1;
int boundaryLoc = textBody.indexOf(boundaryText, pos) - 4;
int begin = ((textBody.substring(0, pos)).getBytes("ISO-8859-1")).length;
int end = ((textBody.substring(0, boundaryLoc)).getBytes("ISO-8859-1")).length;
FileItemFactory fileItemFactory=new DiskFileItemFactory(16,null);
FileItem fileItem=fileItemFactory.createItem("file","image/jpeg",true,"my");
int bytesRead=0;
try{
OutputStream os= fileItem.getOutputStream();
os.write(body,begin,end);
}catch (Exception ex){
ex.printStackTrace();
}
MultipartFile multipartFile=new CommonsMultipartFile(fileItem);
//return imageFileService.upload(multipartFile);
}
private byte[] readBody(HttpServletRequest request) throws IOException {
// 获取请求文本字节长度
int formDataLength = request.getContentLength();
// 取得ServletInputStream输入流对象
DataInputStream dataStream = new DataInputStream(request.getInputStream());
byte body[] = new byte[formDataLength];
int totalBytes = 0;
while (totalBytes < formDataLength) {
int bytes = dataStream.read(body, totalBytes, formDataLength);
totalBytes += bytes;
}
return body;
}
private String getFileName(String requestBody) {
String fileName = requestBody.substring(requestBody.indexOf("filename=\"") + 10);
fileName = fileName.substring(0, fileName.indexOf("\n"));
fileName = fileName.substring(fileName.indexOf("\n") + 1, fileName.indexOf("\""));
return fileName;
}