获取文本框的值并将其用作PHP中的文件名

时间:2014-07-14 06:43:07

标签: php html

我正在尝试获取文本框的值,并将其用作将要下载的文件的文件名。但我不知道该怎么做。

到目前为止,我的代码确实已下载,但我无法使用文本框的值作为其文件名。所以这是我的代码,我应该添加什么才能从文本框中获取值并将其用作下载文件的文件名?

这是HTML方面:

//HTML Code:
<form method="post" action = "/downloads.php">
    <table width="100%" border="0">
        <tr>
            <td width="49%" height="47"> <span class="new">  &nbsp; Reference Number: </span> </td>
            <td width="51%" height="47"> <span class="nbox"> &nbsp; <input type="text" name="refOff" id="refOff"/></td>
        </tr>
        <tr>
            <td height="47" colspan="2">&nbsp;<input type="submit" value="Download" style="width:80px; height:30px"></td>
        </tr>
    </table>
</form>

这是PHP

//PHP Code: 
//note: "C:\wamp\www\dl" contains the PDF file

<?php

$refOff = $_POST['refOff'];
$file   = $refOff . '.pdf';


if (file_exists($file)) {
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename='.basename($file));
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . filesize($file));
readfile($file);
exit;
}
?>

正在下载的文件是&#34; Form2.pdf&#34;。

例如,参考编号是abcd123,怎么可以下载为&#34; abcd123.pdf&#34;?谢谢,因为你很好^ _ ^

3 个答案:

答案 0 :(得分:2)

您需要在表单中设置文件名,然后进行设置。

只需将您的PHP代码更新为:     

$file   = 'C:\wamp\www\dl\Form2.pdf';
$filename = (isset($_POST['refOff'])) ? $_POST['refOff'].'.pdf' : 'form2.pdf'; //Get filename set in form

if (file_exists($file)) {
  header('Content-Description: File Transfer');
  header('Content-Type: application/octet-stream');
  header('Content-Disposition: attachment; filename='.$filename); //Set the filename
  header('Expires: 0');
  header('Cache-Control: must-revalidate');
  header('Pragma: public');
  header('Content-Length: ' . filesize($file));
  readfile($file);
  exit;
}
?>

答案 1 :(得分:1)

您可以通过各自的超变量($ _GET和$ _POST)访问表单变量。 首先,您应该在表单中定义一个方法

<form method="GET">

然后您可以通过以下方式访问该表单的变量:

$_GET['name']

将name替换为您想要的输入的属性名称;在你的情况下

$_GET['refOff']

同样的事情对POST方法有效。


此外,其他用户指定的方式没有错。但是避免不定义表单的方法。并且避免依赖$_REQUEST,如果在没有经验的情况下使用它会导致许多安全问题。

答案 2 :(得分:0)

替换

header('Content-Disposition: attachment; filename='.basename($file));

通过

header('Content-Disposition: attachment; filename='.basename($_REQUEST['refOff']));