Javascript 将网页重定向到文件

Javascript 将网页重定向到文件,javascript,html,apache,redirect,Javascript,Html,Apache,Redirect,假设一个网页显示一个表,但可以选择将其下载为Excel工作表。该选项显示为一个按钮,用于提交包含创建同一报告所需参数的表单,但用于Excel <form action="makereport.blah"> <!-- Some parameters --> <input type="button" value="Export to Excel" onClick="submit();"/> </form> 最后一步是将浏览器指向已创建的Excel工作

假设一个网页显示一个表,但可以选择将其下载为Excel工作表。该选项显示为一个按钮,用于提交包含创建同一报告所需参数的表单,但用于Excel

<form action="makereport.blah">
<!-- Some parameters -->
<input type="button" value="Export to Excel" onClick="submit();"/>
</form>
最后一步是将浏览器指向已创建的Excel工作表

我认为有三种可能性:

在表单的操作页面中,使用OnLoad事件:用JavaScript将URL重写到创建的文件路径并重新加载页面

在HTTP头中:使用Redirect命令重定向到文件的url

使用iframe,其中src是目标文件

这些看起来有点粗糙,但我过去用过。这通常是如何做到的


请注意,我用来生成HTML和Excel工作表的语言是一种内部解决方案。因此,如果PHP有这样的功能,我只需要移植它。

为什么还要有第二个页面?使makereport.blah成为xls文件本身,而不是另一个HTML文档。

为什么还要有第二个页面?使makereport.blah成为xls文件本身,而不是另一个HTML文档。

可能4正确的方法:此表单指向的PHP脚本应发送一个内容类型:application/vnd.ms-excel,然后发送excel文件的内容。如果它是磁盘上的实际文件,请使用readfile,否则直接回显Excel数据。如果要指定下载文件名,还可以发送内容处置:附件;filename='filename'标题。

可能4正确的选项:此表单指向的PHP脚本应发送一个内容类型:application/vnd.ms-excel,然后发送excel文件的内容。如果它是磁盘上的实际文件,请使用readfile,否则直接回显Excel数据。如果要指定下载文件名,还可以发送内容处置:附件;filename='filename'标题。

处理表单服务器端过帐的脚本/代码可以生成Excel电子表格。然后,您可以直接返回带有正确HTTP头的电子表格,而不是使用HTML响应或某种重定向进行回复,如果直接加载文件,则会发送正确的HTTP头

PHP中的一个示例:

<?php

// generate spreadsheet in file
$file = do_something_to_generate_spreadsheet();

// specifies it is an excel spreadsheet response
header('Content-Type: application/vnd.ms-excel'); 
header('Content-Description: File Transfer');
header('Content-Disposition: attachment; filename="' . $file . '"'); // filename
header('Content-Length: ' . filesize($file)); // length

readfile($file); // sends file to client

?>

处理表单服务器端过帐的脚本/代码可以生成Excel电子表格。然后,您可以直接返回带有正确HTTP头的电子表格,而不是使用HTML响应或某种重定向进行回复,如果直接加载文件,则会发送正确的HTTP头

PHP中的一个示例:

<?php

// generate spreadsheet in file
$file = do_something_to_generate_spreadsheet();

// specifies it is an excel spreadsheet response
header('Content-Type: application/vnd.ms-excel'); 
header('Content-Description: File Transfer');
header('Content-Disposition: attachment; filename="' . $file . '"'); // filename
header('Content-Length: ' . filesize($file)); // length

readfile($file); // sends file to client

?>

您可以在新文件中使用DATAURI方案以base64模式插入文件。今晚我将制作一个脚本。

您可以在新文件中使用DATAURI方案以base64模式插入文件。今晚我将制作一个脚本。

使用webtoolkit.info中的base64代码并分解一个XML/XLS文件,我尝试制作一个脚本来强制下载一个空中制作的文件。我创建了一个windows对象,当它打开时,插入用base64编码的XML/XLS代码。此方法是对dataURI的一种攻击。我在下载文件时没有写名字。 我试过谷歌浏览器。 一堆文件


感谢您的关注。

使用webtoolkit.info中的base64代码并分解XML/XLS文件,我尝试编写一个脚本来强制下载空中制作的文件。我创建了一个windows对象,当它打开时,插入用base64编码的XML/XLS代码。此方法是对dataURI的一种攻击。我在下载文件时没有写名字。 我试过谷歌浏览器。 一堆文件


感谢您的关注。

您可能需要在服务器上重新生成数据,但要满足excel的输出。也许看一看?我使用PHP,因为这是您提到的一种语言,不过肯定还有其他可用语言。您可能需要在服务器上重新生成数据,但要满足excel的输出。也许看一看?我使用PHP,因为这是您提到的一种语言,不过肯定还有其他可用语言,因为makereport.xls只能根据需要创建。在创建makereport.xls之前,我无法将用户指向它。因为makereport.xls将仅在需要时创建。在创建之前,我无法将用户指向它。这很好。$file是什么,只是文件名还是路径?没关系,找到了,文件名就是那个,文件名。这样说听起来很傻,但事实并非总是如此!这很好。$file是什么,只是文件名还是路径?没关系,找到了,文件名就是那个,文件名。这样说听起来很傻,但事实并非总是如此!如果不是太麻烦的话,我还是很想看看那会是什么样子。如果不是太麻烦的话,我还是很想看看那会是什么样子。