【问题标题】:Hyperlink works - Html Form with a Submit button doesn't超链接有效 - 带有提交按钮的 Html 表单无效
【发布时间】:2010-09-30 15:27:58
【问题描述】:

我有一个 PHP 脚本,它推送标题以允许文件下载。该脚本在通过超链接或通过使用链接的浏览器调用时可以正常工作。看起来是这样的:

<a href="download.php?file=test.mp3&properFilename=Testing File">Download</a>

我希望这是一个按钮(sbumit),所以我这样做了:

<form action="download.php?file=test.mp3&properFilename=Testing File" method="get">
<input type="submit" value="Download Audio" name="download"/>
</form>

但是,这不起作用。当我点击它时。它会启动下载对话框,但文件名是空的。它将文件名显示为“.mp3”(不带引号)!通过超链接的相同链接显示了确切的文件名“测试文件”。为什么是这样??这里是涉及到的 PHP sn-p:

$filename = '../'.$_GET['file'];
$properFilename = $_GET['properFilename'].'.mp3';

header("Content-Disposition: attachment; filename=\"".basename($properFilename)."\";" );
header("Content-Transfer-Encoding: binary");
header("Content-Length: ".filesize($filename));
readfile("$filename");
exit();   

感谢您的帮助。这让我日日夜夜发疯!!!

【问题讨论】:

    标签: php forms http-headers hyperlink download


    【解决方案1】:

    我认为action url已经被urlencoded,硬编码的GET参数没有发送。

    您可以尝试将操作 url 简单地设置为 download.php 并有两个包含“文件”和“properFilename”参数的隐藏字段,如下所示:

    <form action="download.php" method="GET">
      <input type="submit" value="Download Audio" name="download"/>
      <input type="hidden" name="file" value="test.mp3" />
      <input type="hidden" name="properFilename" value="Testing File" />
    </form>
    

    或者您可以使用输入类型="button",即使没有表单:

    <input type="button" 
          onclick="location.href='download.php?file=test.mp3&properFilename=Testing File';" 
          value="Download"/>
    

    或者图片按钮:

    <a href="download.php?file=test.mp3&properFilename=Testing File">
       <img src="IMAGE_BUTTON_HERE" />
    </a>
    

    【讨论】:

    • 好的,我会按照您的建议尝试。中间解决方案:onclick - 我试过了,但它一直把我带到另一个窗口/选项卡。我需要留在当前窗口/选项卡上——它会这样工作吗?非常感谢您的回复。
    • 效果很好,谢谢!你的第一个解决方案很有效:)
    • 您可以使用javascript添加onclick,以便逐步增强。
    【解决方案2】:

    除了使用 CMS 建议的 之外,您还可以使用 button 元素(这实际上是语义正确的元素,因为您不在表单中)

    <button onclick="document.location = 'bla.php?f=vars'">Download</button>
    

    将 onclick 事件从按钮移到单独的 javascript 文件中当然更好。

    【讨论】:

      猜你喜欢
      • 2015-05-25
      • 1970-01-01
      • 1970-01-01
      • 2019-01-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-11
      相关资源
      最近更新 更多