我可以为HTML表单使用HTML5的下载属性吗?

6
HTML5引入了一个很好的功能,可以通过简单地将download属性添加到<a>标签中,将<a>链接标记为下载终点(请参阅说明)
那么HTML表单是否也可以实现相同的功能呢?
这里举一个简单的例子:我有一个表单,请求用户提供一些详细信息,在用户提交表单后,服务器应根据这些详细信息返回一个文件。

不确定是否与重点相关,但如果您希望“提交”操作影响页面状态(即不触发导航到下载URL的开始),您可以针对_blank 窗口/选项卡,或者更好地,在页面上放置一个隐藏的iframe并将其定位。 (当然,这不会通过[download]标记表单为程序员或CSS的下载端点,正如您所希望的那样)。 - Doin
3个回答

4

@StijnBernards:如果没有涉及到代码,为什么要添加代码?他的回答是“不可能”。你想看哪段代码? - Patrick Hofman

1
不,form 没有 download 属性,因此无法使用 form 实现该特定行为。
但是你可以通过设置 Content-Disposition HTTP 标头来通过提交设置输出文件名:
Content-Disposition: attachment; filename="yourPicture.png"

@gamliela:需要更多帮助吗? - Patrick Hofman
1
谢谢您的回答,我知道Content-Disposition头部。我的问题是关于HTML表单的特定问题。 - gamliela
那是我的回答的第一句话,对吧?我只是不喜欢不给出选择,而Content-Disposition是你能得到规范第二部分最接近的东西。 - Patrick Hofman
不过,它们并不完全相同。download 更有用的一面是它不会取消所有正在运行的 AJAX 请求并将页面置于奇怪的状态。我认为更接近可用的替代方案可能是类似 FileSaver.js 的东西。 - binki
1
@binki 你可以通过使用 <form target "_blank">(在提交时会暂时创建一个新的浏览器标签页)或更好的方法是,将目标设置为页面上名为“myHiddenIFrame”的隐藏iframe的 <form target="myHiddenIFrame">(这样可以避免新标签页的问题)。只要你确定响应是要保存的文件而不是HTML页面,这基本上就会给你与(假设的)未指定文件名的<form download>相同的功能(尽管我承认它有点笨拙)。 - Doin

-1

是的,在提交数据后,您可以通过使用header函数返回PDF或其他格式的文件。

<?php
//create pdf with details
.....
.
.
// We'll be outputting a PDF
header('Content-type: application/pdf');

// It will be called downloaded.pdf
header('Content-Disposition: attachment; filename="downloaded.pdf"');
?>

但是使用download属性是不可能实现的


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接