Este artículo comparte componentes de descarga Spring 4 para su referencia. El contenido específico es el siguiente
paquete com.hnust.common.controller; importar org.apache.commons.io.fileUtils; import org.springframework.http.httpheaders; import og.springframework.http.httpstatus; importar org.springframework.http.mediatype; import org.springframework.http.RespesseNity; org.springframework.web.bind.annotation.restcontroller; import java.io.file; import java.io.ioexception; import java.io.unsupportedenCodingException; import java.net.urlencoder; /*** Creado por Heweipo el 2016/5/27. * <P>* Descargar Controlador general*/ @RestControllerPublic Descargar DownloadController extiende basecontroller {/*** Descargar archivo General Method** @Param File File Object* @return File Byte Stream*/public ResponseEntity <byte []> export (archivo de archivo) {return export (file.getName (), archivo); } / *** Método general para descargar archivos** @param nombre de archivo de nombre de archivo* @param Archivo de archivo objeto* @return byte byte stream* / public respuesta <byte []> export (string filename, archivo archivo) {httpheaders encabezados = new httpheaders (); Headers.SetContentType (Mediatype.application_octet_stream); Headers.setContentDispositionFormData ("Adjunto", EncodeFileName (FileName)); ResponseEntity <byte []> rs = null; Pruebe {// httpstatus.created 201 no se puede usar aquí porque IE Edge no puede reconocerlo, pero Firefox Chrome no es problema rs = nueva respuesta <> (fileutils.readfiletobytearray (archivo), encabezados, httpstatus.ok); } Catch (ioException e) {// tirar nueva CommoneException (ResponseSeStatUsenum.File_Error, E); } return rs; }/** * El nombre del archivo de descarga, que es el nombre que se muestra en el navegador * * @param nombre del archivo de nombre de archivo * @return agregó el nombre del archivo * <p> * es decir * mozilla/5.0 (Windows nt 10.0; wow64; trident/7.0; rv: 11.0) como gecko * <p> * Edge * mozilla/5.0 (Windows nt 10.0; Win64; X64) AppleWebkit/537.36 (khtml, como gecko) Chrome/46.0.2486.0 Safari/537.36 Edge/13.10586 * <p> * Firefox * Mozilla/5.0 (Windows NT 10.0; Wow64; RV: 46.0) Gecko/20100101 Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebkit/537.36 (khtml, como gecko) Chrome/47.0.2526.106 Safari/537.36 */String private String encodeFileName (nombre de archivo de cadena) {String Name = FileName; Pruebe {String Agent = request.getheader ("user-agent"). tolowerCase (); if (null! = agente && (agente.contains ("msie") || agent.contains ("borde"))) {// ie borde name = urlencoder.encode (nombre de archivo, "utf-8"); } else if (agent.contains ("safari") || agent.contains ("chrome") || agent.contains ("firefox")) {// safari chrome firefox name = new String (FileName.getBytes ("UTF-8"), "ISO-8859-1"); } else {// ie10 ie11 name = urlencoder.encode (nombre de archivo, "utf-8"); } // restaurar el signo más en un espacio (es decir, borde tiene un problema) name = name.replace ("+", "%20"); } Catch (UnsupportedEncodingException e) {// tirar nueva commoneException (ResponseeStatUsenum.Failure, E); } nombre de retorno; }} 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.