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);
确实吧路劲这么着的转化一下就行了
posted @ 2019-07-22 16:27  JGG靖哥哥  阅读(1322)  评论(0编辑  收藏  举报