• 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);
    确实吧路劲这么着的转化一下就行了
  • 相关阅读:
    SSH
    List Map Set
    oracle中的in和exsit比较
    Hibernate n+1问题
    单例模式。
    把一段逗号分割的字符串转换成一个数组
    Hibernate总结
    myeclipse安装svn插件的多种方式
    LeetCode 14 Longest Common Prefix
    LeetCode 13 Roman to Integer
  • 原文地址:https://www.cnblogs.com/sunjinggege/p/11226664.html
Copyright © 2020-2023  润新知