So laden Sie eine Datei von der Website herunter - Java / Jsp
Hier zeige ich ein einfaches Java-Beispiel, um zu demonstrieren, wie Benutzer eine Datei von der Website herunterladen können. Unabhängig davon, ob Sie Struts, JSP, Spring oder ein anderes Java-Framework verwenden, ist die Logik dieselbe.
1) Zuerst müssen wirHttpServletResponse response setzen, um dem Browser mitzuteilen, dass das System eine Anwendungsdatei anstelle einer normalen HTML-Seite zurückgeben wird
response.setContentType("application/octet-stream"); response.setHeader("Content-Disposition", "attachment;filename=downloadfilename.csv");
Wir können auch einen Download-Dateinamen inattachment;filename= angeben. Im obigen Beispiel wird ein CSV-Dateiname "downloadfilename.csv" zum Herunterladen durch den Benutzer exportiert.
2) Es gibt zwei Möglichkeiten, wie Benutzer eine Datei von der Website herunterladen können
Datei vom physischen Speicherort lesen
File file = new File("C:\\temp\\downloadfilename.csv"); FileInputStream fileIn = new FileInputStream(file); ServletOutputStream out = response.getOutputStream(); byte[] outputByte = new byte[4096]; //copy binary contect to output stream while(fileIn.read(outputByte, 0, 4096) != -1) { out.write(outputByte, 0, 4096); } fileIn.close(); out.flush(); out.close();
Exportieren Sie Datenbankdaten oder Zeichenfolgen zum Herunterladen durch den Benutzer direkt in InputStream.
StringBuffer sb = new StringBuffer("whatever string you like"); InputStream in = new ByteArrayInputStream(sb.toString().getBytes("UTF-8")); ServletOutputStream out = response.getOutputStream(); byte[] outputByte = new byte[4096]; //copy binary contect to output stream while(in.read(outputByte, 0, 4096) != -1) { out.write(outputByte, 0, 4096); } in.close(); out.flush(); out.close();
3) Fertig
Hier zeige ich mein Beispiel für Streben, um zu demonstrieren, wie Daten direkt in InputStream geschrieben und als "temp.cvs" ausgegeben werden, damit der Benutzer sie herunterladen kann.
public ActionForward export(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { //tell browser program going to return an application file //instead of html page response.setContentType("application/octet-stream"); response.setHeader("Content-Disposition","attachment;filename=temp.csv"); try { ServletOutputStream out = response.getOutputStream(); StringBuffer sb = generateCsvFileBuffer(); InputStream in = new ByteArrayInputStream(sb.toString().getBytes("UTF-8")); byte[] outputByte = new byte[4096]; //copy binary contect to output stream while(in.read(outputByte, 0, 4096) != -1) { out.write(outputByte, 0, 4096); } in.close(); out.flush(); out.close(); } return null; } private static StringBuffer generateCsvFileBuffer() { StringBuffer writer = new StringBuffer(); writer.append("DisplayName"); writer.append(','); writer.append("Age"); writer.append(','); writer.append("HandPhone"); writer.append('\n'); writer.append("example"); writer.append(','); writer.append("26"); writer.append(','); writer.append("0123456789"); writer.append('\n'); return writer; }
Hier ist einfile download example in Servlet code