1

我给用户一个下载 csv 文件的链接......只是使用

Click <a href="report.csv">here</a> to download your file.

此文本和链接显示在一个小弹出窗口中 - 高度 100 宽度 400。

如果用户点击“保存”——那么没问题,文件就会保存到他们选择的任何地方

如果他们选择“打开”,则 csv 文件会显示在小弹出窗口中。这不是我想要的 - 我更喜欢 excel 在 excel 中打开和显示文件,甚至禁用“打开”按钮可能是一个可能的选项。

有什么想法可以实现吗?

谢谢,

4

5 回答 5

4

我假设您正在使用一些 javascript 打开该弹出框 .. 所以我建议不要显示/打开您的小“下载”弹出框,而是在网页上显示此链接。因此,当有人单击链接时,会强制浏览器下载文件,如果他们希望打开它,他们可以并且可能会获得与浏览器窗口大小一样宽的视图。

// 例如,要强制下载 zip 文件,发送标头为

// Set headers
header("Cache-Control: public");
header("Content-Description: File Transfer");
header("Content-Disposition: attachment; filename=$file");
header("Content-Type: application/zip");
header("Content-Transfer-Encoding: binary");
于 2009-10-28T14:36:05.273 回答
1

您无法控制用户的设置,例如哪个应用程序打开了哪种文件类型。他们将不得不去他们的设置并更改文件关联。但是,请记住,并非每个人都安装了 Excel,因此强制用户在此特定应用程序中打开 csv 文件并不是一个好主意。

我也不认为您可以禁用“打开”选项,这也取决于 Web 浏览器的配置是否会显示窗口或是否会直接启动关联的应用程序等...看来您已经退出了在你的特殊情况下运气。

于 2009-10-28T14:34:28.210 回答
0

我相信这是操作系统级别的,无法更改。

于 2009-10-28T14:32:34.747 回答
0

一个半解决方案是添加target="_blank"到标签中。这样,当用户选择“打开”选项时,至少文件将在一个新的(全屏,或至少可调整大小的)窗口中打开。

除此之外,正如 ceejayoz 所说,您无法更改窗口的行为。

于 2009-10-28T15:11:34.777 回答
-1
  • 确保在此之前不执行任何其他输出
  • 构建您的 csv 字符串并将其存储在 $csvString
  • 在 $csv_filename 中给它适当的文件名
  • 标题应该告诉浏览器在 excel 中加载它

    header("Cache-Control: maxage=1");

    header("Pragma: public");

    header("Content-Type: application/vnd.ms-excel");

    header("Expires: 0");

    header("Cache-Control: must-revalidate, post-check=0, pre-check=0");

    header("content-disposition: attachment;filename=$csv_filename");

    echo $csvString;

于 2009-10-28T14:52:10.527 回答