laster
Goto Top

Java Servlet soll dynamisch erzeugte Daten als Download anbieten

vCard - Datei zu Adresse zum Download anbieten

Hallo,

habe ein Servlet, welches Adressen aus einer SQL-DB auflistet. Zu jeder Adresse erzeuge ich jetzt einen String mit den Daten für die vCard. Nun möchte ich einen Link hinter die Adresse setzen, der beim Anklicken eine Datei zum Download anbietet (name_vorname.vcf). Die Datei will ich aber nicht erst auf Platte schreiben, sonder quasi streamen, damit beim Anklicken des Links gleich die AdressCard mit Outlook geöffnet werden kann.
Kennt jemand eine Lösung - wäre sehr dankbar face-smile

vG
LS

Content-ID: 135381

Url: https://administrator.de/forum/java-servlet-soll-dynamisch-erzeugte-daten-als-download-anbieten-135381.html

Ausgedruckt am: 02.04.2025 um 05:04 Uhr

dog
dog 07.02.2010 um 18:45:44 Uhr
Goto Top
HTTP/1.1 200 OK
Content-Type: application/octet-stream
Content-Disposition: attachment; filename="name_vorname.vcf"  
Content-Length: xxx

[...]
laster
laster 07.02.2010 um 20:19:02 Uhr
Goto Top
Hallo dog,
danke für Deine Info, steh blos bisschen auf dem Schlauch. Schick ich das dem Browser als 'Seite', so in der Form
...
PrintWriter out = new PrintWriter(response.getOutputStream());
...
out.println("Content-Type: application/octet-stream");  
...
- kann ich mit nicht richtig vorstellen.
Kannst Du nochmal etwas ausführliche schreiben - wenn Du Laune hast?
dog
Lösung dog 07.02.2010, aktualisiert am 09.05.2014 um 16:18:50 Uhr
Goto Top
Ich bin kein Java-Programmierer.
In PHP würde es so aussehen:

$vcard = "[...]"; // inhalt der karte  
header('Content-Type: application/octet-stream');  
header('Content-Disposition: attachment; filename="'.$name.'_'.$vorname.'.vcf"');  
header('Content-Length: '.strlen($vcard));  

echo $vcard;
laster
laster 07.02.2010 um 20:54:05 Uhr
Goto Top
OK, ich probiere mal, sieht ja ganz gut aus...
Scon mal eine gute Nacht und Woche face-smile
LS
laster
laster 12.02.2010 um 16:35:40 Uhr
Goto Top
Hallo,

zum Abschluss die Lösung in Java (Servlet):
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  PrintWriter out = new PrintWriter(response.getOutputStream());
  ...
  response.setContentType("application/octet-stream");  
  response.setHeader("Content-Disposition", "attachment; filename=vcard.vcf");  
  response.setHeader("Content-Length", "586");  
  ...
  out.print("vcard-Daten im Klartext...");  
  out.close();
}

- geht so, wie es soll.

schöne WE
LS