MultipartHttpServletRequest,ajaxFileUpload上传文件,读取文件乱码问题

    xiaoxiao2025-11-27  6

    @RequestMapping(value = "/uploadOrgid", method = RequestMethod.POST, produces = "text/html;charset=UTF-8") @ResponseBody public String uploadOrgid(Model model, MultipartHttpServletRequest multipartRequest,HttpServletResponse response) throws Exception { MessageBean mess = new MessageBean(); StringBuffer str = new StringBuffer(); for (Iterator it = multipartRequest.getFileNames(); it.hasNext();) { String key = (String) it.next(); MultipartFile file = multipartRequest.getFile(key); try { InputStream ins = file.getInputStream(); BufferedInputStream bfs = new BufferedInputStream(ins); String code = codeString(bfs); InputStream insm = file.getInputStream(); //InputStreamReader 要用insm没有去查询过编码的 InputStream 才行,如果用ins 读不到数据  InputStreamReader in = new InputStreamReader(insm,code); BufferedReader reader = new BufferedReader(in); String tempString = null; // 一次读入一行,直到读入null为文件结束 while ((tempString = reader.readLine()) != null) { str.append(tempString.trim()).append(","); } reader.close(); } catch (IOException e) { logger.error(e.getMessage()); mess.setCode("500"); mess.setContent("读取商户号失败"); return gson.toJson(mess); } } if (str.length() > 0) { str.deleteCharAt(str.length() - 1); } mess.setCode("200"); mess.setContent(str.toString()); return gson.toJson(mess); } /** * 判断文件的编码格式 * @param fileName :file * @return 文件编码格式 * @throws Exception */ private String codeString(BufferedInputStream bin) throws Exception{ int p = (bin.read() << 8) + bin.read(); String code = null; switch (p) { case 0xefbb: code = "UTF-8"; break; case 0xfffe: code = "Unicode"; break; case 0xfeff: code = "UTF-16BE"; break; default: code = "GBK"; } return code; }
    转载请注明原文地址: https://ju.6miu.com/read-1304444.html
    最新回复(0)