¿Cómo cargar y descargar archivos en el fondo SpringBoot?
Un proyecto reciente involucró la carga y descarga de archivos. La carga frontal utiliza el complemento Baidu Webupploader. El uso de este complemento todavía está en investigación y se resolverá y grabará en el futuro. Este artículo presenta principalmente el procesamiento de la carga y descarga de archivos en el fondo SpringBoot.
Carga de archivo único
// Single File @RequestMapping (value = "/upload")@ResponseBodyPublic String upload (@RequestParam ("file") File multipartfile) {try {if (file.isEmpty ()) {return "El archivo está vacío"; } // Obtenga el nombre de archivo String filename = file.getOriginalFileName (); logger.info ("El nombre de archivo cargado es:" + nombre de archivo); // Obtenga el nombre de sufijo de la cadena de archivo sufixName = filename.substring (filename.lastIndexOf (".")); logger.info ("El nombre de sufijo del archivo es:" + sufrejamiento); // Establecer la ruta de almacenamiento de archivos String filePath = "d: // AIM //"; String ruta = FilePath + FileName + SuffixName; Archivo dest = nuevo archivo (ruta); // Detectar si el directorio existe if (! Dest.getParentFile (). Exists ()) {Dest.getParentFile (). MkDirs (); // Cree una nueva carpeta} File.transferto (Dest); // Escribir el archivo para devolver "cargado con éxito"; } catch (ilegalStateException e) {E.PrintStackTrace (); } catch (ioException e) {E.PrintStackTrace (); } return "fallado de carga";}Si desea modificar la ruta del archivo y el nombre del archivo, simplemente modifique FilePath y FileName.
Subidas de múltiples archivos
// Multi-File @RequestMapping (value = "/uploadmore", método = requestmethod.post) @ResponseBodyPublic String handleFileUpload (httpservletRequest request) {list <PolteAtfile> files = ((multiparthTTpServletRequest) solicitud) .getfiles ("archivo"); File múltiple de File = null; BufferedOutputStream stream = null; for (int i = 0; i <files.size (); ++ i) {file = files.get (i); Cadena filePath = "d: // AIM //"; if (! file.isEmpty ()) {try {byte [] bytes = file.getBytes (); stream = new BufferedOutputStream (nuevo FileOutputStream (nuevo archivo (FilePath + File.getOriginalFileName ()))); // Establezca la ruta del archivo y el nombre Stream.Write (bytes); // escribir en stream.close (); } capt (excepción e) {stream = null; return "th" + i + "El archivo de carga fallida ==>" + e.getMessage (); }} else {return "th" + i + "La carga falló porque el archivo está vacío"; }} return "cargado correctamente";}Descarga de archivos
// descarga de archivo Código relacionado @RequestMapping ("/descargar") public String downloadFile (httpservletRequest request, httpServletResponse respuesta) {string filename = "aim_test.txt"; // Establecer el nombre de archivo y reemplazarlo con el nombre de archivo que se descargará de acuerdo con las necesidades comerciales si (filename! = Null) {// Establecer la ruta de archivo real = nuevo archivo (RealPath, FileName); if (file.Exists ()) {Response.SetContentType ("Application/Force-Download"); // Establezca la descarga forzada sin abrir Respuesta.addHeader ("Content-Disposition", "Archivo; FileName =" + FileName); // Establezca el nombre de archivo Byte [] buffer = new Byte [1024]; FileInputStream fis = null; BufferedinputStream bis = null; intente {fis = new FileInputStream (archivo); bis = new BufferedInputStream (FIS); OutputStream OS = Response.getOutputStream (); int i = bis.read (buffer); while (i! = -1) {os.write (buffer, 0, i); i = bis.read (buffer); } System.out.println ("éxito"); } catch (Exception e) {E.PrintStackTrace (); } finalmente {if (bis! = null) {try {bis.close (); } catch (ioException e) {E.PrintStackTrace (); }} if (fis! = null) {try {fis.close (); } catch (ioException e) {E.PrintStackTrace (); }}}}} return null;}Configuración de multipartconfig
Puede usar la clase de configuración de multipartconfig para controlar las cargas de archivos a nivel mundial.
@ConfigurationPublic Clase MultipartConfig {@Bean public multipartconfigelement multipartConfigelement () {multipartconfigFactory factory = new MultipARTConFigFactory (); // Establecer el límite de tamaño del archivo, si la página excede este tamaño, la información de excepción se lanzará factory.setMaxFilesize ("2mb"); // KB, MB // Establecer los datos cargados totales TOTAL FACORY.SetMaxRequestSize ("20Mb"); // Establecer la ruta de la carpeta temporal del archivo // factory.setLocation ("e: // test //"); // Si el archivo es mayor que este valor, se almacenará como un archivo. Si es menor que este valor, el archivo se almacenará en la memoria. El valor predeterminado es 0 // factory.setMaxRequestSize (0); return factory.createMultipartConfig (); }}Cosas a tener en cuenta
El formato de transferencia de archivo delantero y trasero debe ser multipart/formulario de datos
Lo anterior es todo el contenido de este artículo. Espero que sea útil para el aprendizaje de todos y espero que todos apoyen más a Wulin.com.