El código de implementación de la función de descarga del archivo Struts2 es el siguiente:
Archivo de acción
La clase pública descarga de descarga extiende ActionSupport { / ** * * / Private static final Long SerialVersionUid = 5879762231742395104l; String private FileName; // El nombre del archivo solicitado por el usuario Private String inputPath; // La ruta para descargar el recurso (establecido en el archivo de configuración de Struts) public void setInputPath (string inputPath) {this.inputPath = inputPath; } public String getInputPath () {return inputPath; } public void setFileName (string filename) {this.fileName = filename; } public String getFileName () {return FileName; } public String downloadFile () lanza excepción {ServletContext context = ServletActionContext.getServletContext (); Cadena descargaDir = context.getRealPath ("/upload"); String downloadFile = context.getRealPath (inputPath); // evitar que los usuarios soliciten recursos inseguros si (! Downloadfile.startswith (downloadDir)) {return null; } return "download_success"; } /** Get Input Stream Resource* / public inputStream getInputStream () lanza la excepción {string path = inputPath + file.separatorChar + new String (filename.getBytes ("ISO-8859-1"), "UTF-8"); return servletActionContext.getServletContext (). getResourceasStream (ruta); } /** Obtenga el nombre de archivo predeterminado del archivo al descargar* / public String GetdownloadFileName () {String downloadFileName = filename; Pruebe {downloadFileName = urlencoder.encode (downloadFileName, "ISO-8859-1"); } Catch (UnsupportedEncodingException e) {e.getMessage (); E.PrintStackTrace (); } return downloadFileName; }}Archivo JSP:
<li> <a href = "<%= path%>/download_downloadaction_downloadfile.action? FileName = dwr.jar"> dwr.jar archivo en </a> </li> <li> <a href = "<%= path%>/download_downlowact_downloadfile.action? filename = struts2 tutorial.pdf"> struts2 file </li>
struts.xml:
<action name="download_*_*" method="{2}"> <param name="inputPath">/upload</param> <!-- result type set to stream --> <result name="download_success" type="stream"> <!-- MIME type--> <param name="contentType">application/octet-stream</param> <!-- The value of inputName corresponds to the method name of the action to Obtenga el recurso de transmisión de entrada (el método getInputStream se define en la acción, y el tipo de retorno es inputStream)-> <param name = "inputName"> inputStream </param> <!-Establezca el archivo con adjuntos para obtener dinámicamente el nombre del archivo (define el método de getdownloDlowDloDloD de la acción en acción)-> <param name = "contentDisp:" adjunta; fileName = "$ {download {Download}" <Lo anterior es el contenido relevante de la implementación STRUTS2 del código de función de función de descarga de archivos (transcodificación de nombre de archivo en chino) presentado por el editor. ¡Espero que sea útil para todos!