Здравствуйте. Появилась необходимость на своей форме (формируется программно) добавить ссылку на файл для закачки (доступ к файлам публичным). Правильно ли я думаю, что для того что бы у пользователя открылся диалог на закачку, нужно написать своё, нечто похожее на file_download(), используя file_transfer, кто-то уже писал такое? Спасибо.
Комментарии
Это решение подойдёт только тем, кто не хочет ставить дополнительные модули и ссылку на скачивание нужно разместить один раз. Вот пример кусочка кода:
<?php
$headers = array();
$headers = array(
file_transfer($mymodule_download_url, $headers);
/**
* Implementation of hook_menu().
*/
function mymodule_menu() {
$items = array();
$items['mymodule/download'] = array(
'title' => t('Url mymodule download'),
'page callback' => 'mymodule_download',
'access arguments' => array('access mymodule download'),
'type' => MENU_CALLBACK,
);
return
$items;}
function
mymodule_download(){$mymodule_download_url = file_create_path(MYMODULE_URL);
if (
file_exists($mymodule_download_url)) {'Content-Type: force-download',
'Content-Disposition: attachment; filename="' . MYFILE_NAME . '"',
'Content-Length: ' . filesize($mymodule_download_url),
'Content-Transfer-Encoding: binary',
'Pragma: no-cache',
'Cache-Control: must-revalidate, post-check=0, pre-check=0',
'Expires: 0',
'Accept-Ranges: bytes'
);
}
drupal_not_found();else{
return
}
}
?>
Код позаимствован из модуля download_file