java 接受带有中文的get请求文件下载时的问题
参数是接受到了 , debug的时候也能看的到 , 但是奇怪的是就是找不到文件
@ApiOperation(value = "文件下载/图片预览") @GetMapping(value = "/file/{type:download|view}") public Object fileDownloadOrView(ModelMap modelMap,String filePath,String fileName,@PathVariable ("type") String type, HttpServletResponse responsen ) throws Exception { if(StringUtils.isBlank(filePath)){ modelMap.put("msg", "参数错误!!!"); return setModelMap(modelMap, HttpCode.BAD_REQUEST); } String note=new String(filePath.trim().getBytes("ISO-8859-1"), "UTF-8"); File file = new File(note); if(file.exists() && file.isFile()){ if("download".equals(type)){ String fileSuffix = file.getName().substring(file.getName().lastIndexOf("."),file.getName().length()); if(StringUtils.isEmpty(fileName)){ fileName = UUID.randomUUID().toString(); } fileName = fileName+fileSuffix; try { responsen.setContentType("multipart/form-data"); responsen.addHeader("Content-Length", "" + file.length()); responsen.setHeader("Content-Disposition", "attachment; filename=" + URLEncoder.encode(fileName, "UTF-8")); } catch (UnsupportedEncodingException e1) { e1.printStackTrace(); } } FileInputStream inputStream = null; OutputStream outputStream = null; try { inputStream = new FileInputStream(file); outputStream = responsen.getOutputStream(); IOUtils.copy(inputStream, outputStream); } catch (IOException e) { e.printStackTrace(); } finally { try { inputStream.close(); outputStream.flush(); outputStream.close(); } catch (IOException e) { e.printStackTrace(); } } return null; } else { modelMap.put("msg", "文件不存在!!!"); return setModelMap(modelMap, HttpCode.CONFLICT); } }
虽然不知道为什么原因 , 但是
String note=new String(filePath.trim().getBytes("ISO-8859-1"), "UTF-8");
File file = new File(note);
确实吧路劲这么着的转化一下就行了