Java descarga archivos con transmisión, el nombre del archivo es una solución ilegible.

archivo de descarga de Java Stream

Consulte el método convencional de descarga de archivos mediante transmisión:

@RequestMapping("/fileDownLoad")
    public void fileDownLoad(HttpServletResponse response, @RequestParam("id") Long id) {
 log.info("……fileDownLoad………start………");
        if (null == id) {
            return;
        }
        FileUploadRecord fileUploadRecord = iFileUploadRecordService.selectFileUploadRecordById(id);
        String Address = fileUploadRecord.getFileAddress();
        String filenamedisplay = null;
        filenamedisplay = Address.substring(Address.lastIndexOf(File.separator) + 1);
        log.info("文件名称为:" + filenamedisplay);
        File file = new File(Address);
        if (file.exists()) {
            OutputStream os = null; // 输出流
            InputStream in = null;
            try {
                in = new BufferedInputStream(new FileInputStream(file));
                byte[] buffer = new byte[in.available()];
                in.read(buffer);
                in.close();

                response.reset();
                response.setCharacterEncoding("utf-8");
                response.setContentType("application/octet-stream");
                response.setHeader("Content-Disposition", "attachment;fileName=" + new String(filenamedisplay.getBytes(), "iso-8859-1"));

                os = new BufferedOutputStream(response.getOutputStream());
                os.write(buffer);
                os.flush();
                os.close();

            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                if (null != os) {
                    try {
                        os.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
                if (null != in) {
                    try {
                        in.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }
        }
     }

Tenga en cuenta aquí: ①Descargue el formato de codificación de contenido response.setCharacterEncoding ("utf-8");
②Si el nombre del archivo está en chino, no se puede mostrar, consulte el método de procesamiento aquí: response.setHeader ("Content-Disposition", "attach; fileName = "+ Nueva cadena (filenamedisplay.getBytes ()," iso-8859-1 "));

Para que pueda descargar el archivo que muestra el nombre chino

67 artículos originales publicados · Me gusta12 · Visitantes más de 10,000

Supongo que te gusta

Origin blog.csdn.net/m0_37635053/article/details/103895183
Recomendado
Clasificación