Estás leyendo la publicación: Cómo crear un enlace de descarga personalizado en Magento 2
espacio de nombres Proveedor\Extensión\Controlador\Descargar;
use Magento\Framework\App\Action\Action;
use Magento\Framework\App\Action\Context;
use Magento\Framework\App\Response\Http\FileFactory;
use Magento\Framework\Exception\FileSystemException;
use Magento\Framework\Filesystem\DirectoryList;
use Psr\Log\LoggerInterface;
El índice de clase extiende la acción.
{
$ descargador protegido;
registrador de $ protegido;
directorio $ protegido;
función pública __construct(Contexto $contexto,
fábrica de archivos $ fábrica de archivos,
RegistradorInterfaz $registrador,
DirectoryList $directorio)
{
$este->registrador = $registrador;
$this->downloader = $fileFactory;
$este->directorio = $directorio;
padre::__construcción($contexto);
}
función pública ejecutar ()
{
$fileName = $this->getRequest()->getParam(‘file’);
$filePath = ”;
intentar {
$filePath = $this->directory->getPath(“medios”) . ‘/Dir_ruta/’ . $nombreArchivo;
} captura (Excepción del sistema de archivos $e) {
$this->logger->info($e->getMessage());
}
intentar {
devuelve $this->downloader->create($fileName, [
‘type’ => ‘filename’,
‘value’ => $filePath,
],
\Magento\Framework\App\Filesystem\DirectoryList::MEDIA,
‘aplicación/flujo de octetos’);
} atrapar (\Excepción $e) {
$this->logger->info($e->getMessage());
}
// devuelve verdadero;
}
}