JAVA: descargue el archivo. Descargue el archivo en la ubicación predeterminada del navegador. Ingrese la cadena y conviértala a InputStream. Descárguela como un archivo y convierta string\InputStream\OutputStream entre sí.


Este blog se basa en un proyecto JAVA, que convierte la cadena de entrada en un InputStream y luego descarga el archivo en la ubicación predeterminada del navegador. También implica convertir un flujo de entrada en una cadena, escribir una cadena en un flujo de salida y escribir la salida en una cadena; también existen formatos de tipo contenido comúnmente utilizados.

1. Convertir cadena a InputStream

La primera parte es convertir una cadena a InputStream.
También enumera el flujo de entrada a cadena, la cadena a OutputStream y la salida a cadena para uso posterior ~

//string转inputstream
String inputStr = "testXXX";
InputStream inputStream = new ByteArrayInputStream(inputStr.getBytes());

//inputstream转string
ByteArrayOutputStream outs = new ByteArrayOutputStream();
int i;
while((i = i.read() != -)){
    
    
    outs.write(i);
}
String str = outs.toString();

//string写入outputStream
OutputStream os = System.out;
os.write(string.getByte());

//output写入string
ByteArrayOutputStream outs = new ByteArrayOutputStrea();
String str = outs.toString();

2. Descargar archivos

Debe pasar directamente la respuesta HttpServletResponse a los parámetros de la interfaz del controlador, configurar los datos de respuesta en el objeto HttpServletResponse
y luego Tomcat convertirá el objeto HttpServletResponse en una cadena de acuerdo con el formato del protocolo HTTP y lo volverá a escribir en el navegador a través de Socket.

Ingrese el nombre del archivo de configuración (fileName) y el tipo de archivo que se descargará (contentType). ContentType se puede explicar en detalle en la siguiente sección.

inputStream es el flujo de archivos que se descargará, ya sea un archivo de red o un archivo almacenado en el servicio de almacenamiento estático COS del servicio en la nube, se puede convertir al formato de InputStream.

	public void downloadFile(HttpServletResponse response, InputStream inputStream, String fileName, String contentType) {
    
    
        try (BufferedOutputStream out = new BufferedOutputStream(response.getOutputStream())) {
    
    
            //通知浏览器以附件形式下载
            response.setHeader("Content-Disposition", String.format("attachment; filename=\"%s\"", fileName));
            //文件输出格式
            response.setContentType(contentType);
            byte[] input = new byte[1024];
            int len;
            while ((len = inputStream.read(input)) != -1) {
    
    
                out.write(car, 0, len);
            }
        } catch (IOException e) {
    
    
            log.error("Method:downloadFile,ErrorMsg:{}", e.getMessage());
        }
    }

interfaz del controlador

 @GetMapping("/download")
 public void download(HttpServletResponse response) {
    
    
         return this.downloadFile(response);
    }

Tipo de contenido

text/plainFormato de texto plano
text/javascriptFormato JSON Formato
text/plainHTML
text/xmlFormato XML

image/gifFormato de imagen GIF Formato
image/jpegde imagen JPEG Formato de
image/pngimagen PNG Formato
image/tiffTIFF Formato
image/x-dcxiDCX
image/x-pcxFormato PCX

application/xmlFormato de datos XML Formato
application/jsonde datos JSON Formato
application/pdfPDF Formato
application/rtfRTF Formato de
application/msworddocumento de Word Formato de documento
application/vnd.ms-excelde Excel Formato
application/vnd.ms-powerpointde documento de Powerpoint Formato de
application/vnd.visiodocumento de Visio
application/octet-streamDatos de flujo binario

Supongo que te gusta

Origin blog.csdn.net/weixin_44436677/article/details/128010128
Recomendado
Clasificación