Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Dateinamen beim FileDownloadServlet

Empfohlene Antworten

Veröffentlicht

Hi!

Folgendes Problem: Ich biete eine Datei zum Download an. Wenn ich nun auf den Link klicke öffnet mir der Browser das Fenster "Downloaden einer Datei von diesem Ort: FileDownloadServlet?index=0 von Localhost

Wie möchten Sie verfahren....Öffnen....Speichern"

Wie bekomme ich nun den Dateinamen dort anstatt diesem FileDownloadServlet hin??

Das FileDownloadServlet schickt die Datei an den Response.

public class FileDownloadServlet extends HttpServlet {


	public void doGet(HttpServletRequest req, HttpServletResponse res)

		throws ServletException, IOException {


		HttpSession session = req.getSession();

		InhaltForm inf = (InhaltForm) session.getAttribute("inhaltForm");

		int index = Integer.parseInt(req.getParameter("index"));


		String dateiname = null;

		byte[] datei = null;

		DTOAnhang anhang = (DTOAnhang) inf.getAttachments().get(index);

		dateiname = anhang.getDateiname();

		datei = anhang.getDatei();


		res.setContentType("application/octet-stream");

		res.setHeader(

			"Content-Disposition",

			"attachment; filename=\"" + anhang.getDateiname() + "");

		try {

			ServletOutputStream out = res.getOutputStream();

			int bytesRead;

			out.write(datei);


		} catch (IOException e) {

			e.printStackTrace();

		}

	}


}

Wenn ich dann auf Speichern klicke wird mir der Dateiname ja angezeigt, nur muss es doch irgendwie möglich sein diesen auch schon auf dem ersten Dialog anzuzeigen oder??

Hi,

ich realisiere das über einen Filter.

die url sieht zum Beispiel so aus:

http://www.xyz.de/download/6294/folien.zip

Alles was an http://www.xyz.de/download/* geht, fängt der Filter ab, holt sich die id aus der URL und der Dateiname ist so wie angezeigt.

Den Filter bindest du so in der web.xml ein:


<web-app>


  <filter>

    <filter-name>DownloadFilter</filter-name>

    <filter-class>de.xyz.doz.filter.DownloadFilter</filter-class>

  </filter>


  <filter-mapping>

  	<filter-name>DownloadFilter</filter-name>

  	<url-pattern>/download/*</url-pattern>

  </filter-mapping>

  .

  .

  .

</web-app>

Gruß Jaraz

  • Autor

Ich hab da jetzt aber in der URL keinen Dateinamen drin stehen!

.../FileDownloadServlet?index=0

Gibt es da nicht die Möglichkeit den Dateinamen irgendwie in den response zu schreiben?

Der is ja dann beim Speichern auch vorhanden!

res.setHeader(

			"Content-Disposition",

			"attachment; filename=\"" + anhang.getDateiname() + "");

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.