So laden Sie die Datei von der Website herunter - Java/Jsp

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;
}