Wie erstelle ich einen Link, um generierte Dokumente in symfony2 herunterzuladen?

9

Dokumente werden vom System erstellt und im Ordner / web / downloads gespeichert. Ich habe eine Ansicht erstellt, um Links anzuzeigen, die es einem Benutzer ermöglichen, die Dateien herunterzuladen, wenn der Benutzer auf die Links klickt. (Standard-Klick zum Herunterladen der Funktion)

Ich bin neu in Symfony2 und bin dabei, das gesamte Routing / Controller-Konzept zu verstehen, aber wie würde man einen Link zu solchen Dateien erstellen, während man immer noch an der MVC festhält? Muss man Routing mit einem Controller einrichten oder hat Zweig Features, die es erlauben etc ..

PS: Ich habe Fragen wie Wie erstellt man einen Download-Link in Symfony2? aber ich bekomme nicht, wenn sie etwas im Routing getan haben oder einfach nur Links hinzugefügt haben.

Danke,

    
ddtpoison777 12.04.2012, 11:39
quelle

5 Antworten

6

Lass uns ein Beispiel machen.

Sagen Sie, Ihr Projekt lebt in / www /, also / www / web / ist das Wurzelverzeichnis Ihrer symfony2-Anwendung. Nun wird alles angezeigt, was Sie in / www / web / über Ссылка aufrufen möchten.

/www/web/downloads/file.zip wäre standardmäßig unter Ссылка erreichbar.

    
Christian Riesen 12.04.2012, 11:55
quelle
35

Beispielimplementierung wäre

Erstellen Sie eine Route,

%Vor%

Und dann in Ihrem Controller,

%Vor%

Um einen Download-Link zu erstellen, überprüfen Sie URLs generieren im Dokument.

>     
Mun Mun Das 12.04.2012 12:38
quelle
5

Dies ist die beste Lösung, die ich bisher gefunden habe. Sie können damit Downloads von außerhalb Ihres "/ var / www / web /" - Ordners bereitstellen, was die Datei nicht macht zugänglich, ohne dieses Skript auszuführen, um die Datei zu bedienen.

Auf diese Weise können Sie prüfen, ob der Downloader die Datei herunterladen darf, die er möchte.

In diesem Beispiel habe ich "/ var / www / downloads /" verwendet, wo ich alle Dateien speicher, die ich als Download bereitstellen möchte:

%Vor%

Quelle: Dokumente: Ссылка

(sollte an Versionen über 2.2 arbeiten)

    
Andy 18.12.2013 12:36
quelle
4

Das Hinzufügen des Pfads der Datei zum href -Attribut funktionierte für mich nicht.

Wenn Sie darauf klicken, wird nur die Datei angezeigt, ohne sie wirklich herunterzuladen.

Was für mich funktionierte, ist das Hinzufügen eines download -Attributs zu meinem Link, der ein HTML5-Attribut ist. Fügen Sie einfach das Attribut wie folgt hinzu:

%Vor%

Wenn Sie auf den Link klicken, wird die Datei ohne einen Servercode heruntergeladen.

Sie können dem Attribut download auch einen Wert zuweisen.

%Vor%

Der Wert des Attributs download wird als Dateiname der heruntergeladenen Datei anstelle der Datei verwendet, die verwendet wurde, als sie auf dem Server gespeichert wurde.

Ich habe das Tutorial auf der Symfony-Website bezüglich der Handhabung von Dateiuploads verfolgt. Ich fand es hilfreich, wenn ich herausgefunden habe, wie man einen Download-Link für die Datei erstellt. Ich habe gerade eine Methode zur Document -Entität namens getDownloadFileName() hinzugefügt, die nur den Dateinamen zurückgibt, den ich dem Attribut download zuweisen möchte.

Im Grunde genommen habe ich es so auf der Zweigvorlage meines Symfony-Projekts implementiert

%Vor%     
schizoskmrkxx 03.02.2015 09:08
quelle
0

Ich weiß nicht, ob das zu Ihnen passt, aber behalten Sie eine andere, sehr einfache Alternative im Hinterkopf:

d. Ihrer Meinung nach:

%Vor%

Es öffnet die Datei, und der Benutzer hat die Entscheidung, ob er es drucken will, es herunterladen ... usw.

    
lio89 12.08.2015 17:41
quelle

Tags und Links