Drupal 7 如何在drupal7中创建文件下载弹出窗体

Drupal 7 如何在drupal7中创建文件下载弹出窗体,drupal-7,popup,download,Drupal 7,Popup,Download,我对drupal是新手。我想创建一个带有名称、电子邮件字段、下载和关闭按钮的弹出式表单,当用户单击下载链接时,弹出式表单要显示,然后用户在验证后给出名称和电子邮件文件已由用户下载,以及有多少用户已下载。我如何点他的您可以使用该模块,这将提示用户在下载文件之前至少填写电子邮件字段。您可以添加任意数量的文件。请看这个答案 如果要手动执行此操作,请创建包含必要字段的,并且可以使用。在template.php中 function YOUR_THEME_form_alter(&$form,

我对drupal是新手。我想创建一个带有名称、电子邮件字段、下载和关闭按钮的弹出式表单,当用户单击下载链接时,弹出式表单要显示,然后用户在验证后给出名称和电子邮件文件已由用户下载,以及有多少用户已下载。我如何点他的您可以使用该模块,这将提示用户在下载文件之前至少填写电子邮件字段。您可以添加任意数量的文件。请看这个答案

如果要手动执行此操作,请创建包含必要字段的,并且可以使用。在template.php中

    function YOUR_THEME_form_alter(&$form, &$form_state, $form_id){
        if($form_id == "YOUR_WEBFORM_ID")
        {
            $form['#submit'][] = 'download_file';
        }
    }

    function download_file(){

        $file_path = variable_get('file_public_path', conf_path() . '/files');
        $file_name = $file_path."/YOUR_FILE";
        $file = fopen($file_name, 'r');
        $file_size = filesize($file_name);

        header("Content-type: application/pdf"); // add here more headers for diff. extensions
        header("Content-Type: application/force-download");
        header("Content-Type: application/download");
        header("Content-Description: File Transfer");
        header("Content-Disposition: attachment; filename=\"".  urlencode('FILENAME')."\""); // use 'attachment' to force a download
        header("Content-length: $file_size");
        header("Cache-control: private"); //use this to open files directly
        while(!feof($file)) {
             $buffer = fread($file, 2048);
             echo $buffer;
             flush();
        }
        $url = $_SERVER['REQUEST_URI'];
        header('Location:'. $url);
        fclose ($file);
}
这将在提交表单时下载文件


要使表单成为弹出窗口,请在表单设置下使表单作为块可用,并将表单块放入任何jQuery插件中,如

很好的代码,这是drupal钩子中需要的。但问题是在文件下载后,控件不会返回到表单。对这个问题有任何有价值的建议。对与您@Bharanikumar相同的东西感兴趣,我还需要添加来自admin的文件,您知道任何方法吗?