#symfony
#symfony
Вопрос:
После добавления функциональности загружайте файл или много файлов благодаря пакету «vich», я бы загрузил файл, который загрузил. Мои файлы сохраняются в папке загрузки, созданной в корневой папке.
У меня есть этот код, но ошибка с надписью «файл не найден»..
<a download class="btn btn-info btn-sm" href="{{'upload/' ~ document.image }}"><i class="fas fa-file-download"></i> {{ document.image }} </a>
Комментарии:
1. и вы имеете в виду «корневую папку»… корень symfony, в котором находятся src, config и т.д.? поскольку извне легко доступны только каталоги в
public/
, все остальное должно доставляться контроллером. поэтому я бы посоветовал вам переместить каталог загрузки в общий каталог. однако, если вы хотите добавить контроль доступа, вам следует создать контроллер, который доставляет файл.2. да, точно. Итак, я должен создать новую функцию на контроллере для
Ответ №1:
Чтобы загрузить файл при использовании пакета Vich uploader bundle, вам необходимо создать функцию внутри вашего класса контроллера и вызвать ее из вашего шаблона.
Например:
use SymfonyBundleFrameworkBundleControllerAbstractController;
use VichUploaderBundleHandlerDownloadHandler;
class MyController extends AbstractController
{
/**
* @Route(...)
*
* @param Document $document The document to download
* @param DownloadHandler $downloadHandler Handler
*
* @return Response
*/
public function downloadDocument(Document $document, DownloadHandler $downloadHandler): Response
{
return $downloadHandler->downloadObject($document, 'documentFile');
}
}
Для получения дополнительной информации см. VichUploaderBundle serving_files_with_a_controller
Комментарии:
1. маршрут в случае OP, вероятно,
/upload/{filepath}