PHP生成文件并将promt另存为

时间:2018-08-28 07:14:05

标签: php csv download

我有一个用于生成.csv文件然后下载的脚本,但是我需要为用户提供“另存为”对话框,因为我想快速替换旧文件。

一个简单的例子,我下载文件“ myFile.csv”,然后编辑数据并再次下载以进行刷新,但是我需要替换该文件,然后浏览器将其下载为“ myFile(1).csv” ,因此我需要更改名称。关键是时间。

我希望对话框的“另存为”(force as)的名称相同,并替换它。

MWE:

<?php
header('Content-Type: text/csv;charset=Windows-1252');
header('Content-Disposition: inline; filename="myFile.csv";');

$delimiter = ',';

$f = fopen('php://output', 'w');

foreach ($cars as $car) {
    fputcsv($f, [$car['id'],$car['model'],$car['color'],null], $delimiter);
}
fclose($f);
?>

编辑(声明)

在Google Chrome 68上测试

我只是意识到我没有提到要点,选择下载链接时,下载会自动以myFile(1).csv 开始,这就是我要停止的内容,不想自动下载,我想要保存对话框,保存或取消。

3 个答案:

答案 0 :(得分:1)

作者可以建议将文件另存为的文件名(通过URL,download属性或Content-Disposition响应标头),但是无法进行 浏览器询问用户他们要使用的文件名。

保存到默认目录或提示用户输入要保存的位置完全取决于浏览器。

想要什么是不可能的。

答案 1 :(得分:0)

  

然后浏览器将其下载为“ myFile(1).csv”

因为它意识到目标文件夹中已经存在一个名为myFile.csv的文件。

  

我希望对话框的“另存为”(force as)的名称相同,并替换它。

那不可能。

下载文件时,您只能为用户指定文件名 ,但是在这方面您不能强加任何内容。

如果将浏览器设置为自动,将这些下载内容保存到目录中,而无需用户进行任何进一步的交互,那么根本无法进行任何操作(用户更改了设置);如果用户必须确认每次下载,则在保护文件安全之前,他们将必须手动将自动建议的文件名myFile (1).csv更正为myFile.csv,以便随后提示他们确认是否要替换现有文件。

答案 2 :(得分:-1)

尝试改用此标头:
内容处置:附件; filename =“ myFile.csv”

发件人:https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Disposition

内容处置
HTTP上下文中的第一个参数是内联(默认值,表明可以在网页内显示,也可以作为网页显示)或附件(指示应下载;大多数浏览器会先显示“另存为”对话框)加上文件名参数的值)。

内容处置:内联 内容处置:附件 内容处置:附件; filename =“ filename.jpg”