El backend de descarga de archivos devuelve el flujo al front-end

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

 public class MyServlet extends HttpServlet {
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
      // 获取文件路径
      String filePath = "/path/to/file.txt";
      Path path = Paths.get(filePath);
       // 检查文件是否存在
      if (!Files.exists(path)) {
         response.sendError(HttpServletResponse.SC_NOT_FOUND);
         return;
      }
       // 设置响应类型
      response.setContentType("application/octet-stream");
      response.setHeader("Content-Disposition", "attachment;filename=" + path.getFileName());
       // 获取文件内容流并写入响应
      Files.copy(path, response.getOutputStream());
   }
}

En el servlet anterior, primero debe obtener la ruta del archivo que se devolverá y luego verificar si el archivo existe. Si el archivo no existe, devuelva HttpServletResponse.SC_NOT_FOUNDel código de respuesta; de lo contrario, establezca el tipo de respuesta HTTP application/octet-streamy establezca el encabezado de respuesta Content-Dispositionpara attachmentque el navegador muestre automáticamente el cuadro de diálogo de descarga del archivo. Finalmente, el flujo de contenido del archivo se escribe en el flujo de salida de respuesta HTTP para devolverlo al front-end.

Supongo que te gusta

Origin blog.csdn.net/qq_37511875/article/details/130803569
Recomendado
Clasificación