PHP生成文件并将其另存为

PHP生成文件并将其另存为,php,csv,download,Php,Csv,Download,我有一个生成.csv文件然后下载的脚本,但我需要用户的“另存为”对话框,因为我想快速替换旧文件。 一个简单的例子,我下载文件“myFile.csv”,然后编辑数据并再次下载以进行刷新,但我需要替换该文件,浏览器将其下载为“myFile(1.csv)”,因此我需要更改名称。关键是,时间至关重要 我希望原力的“另存为”对话框具有相同的名称,并将其替换 A MWE: <?php header('Content-Type: text/csv;charset=Windows-1252'); head

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

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

我希望原力的“另存为”对话框具有相同的名称,并将其替换

A 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);
?>

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

发件人:

内容配置

HTTP上下文中的第一个参数是内联(默认值,表示它可以显示在网页内,或作为网页显示)或附件(表示它应该下载;大多数浏览器都显示“另存为”对话框,如果存在,则以文件名参数的值作为前缀)

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

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

发件人:

内容配置

HTTP上下文中的第一个参数是内联(默认值,表示它可以显示在网页内,或作为网页显示)或附件(表示它应该下载;大多数浏览器都显示“另存为”对话框,如果存在,则以文件名参数的值作为前缀)

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

作者可以建议将文件另存为的文件名(通过URL、
下载
属性或
内容配置
响应标题),但无法使浏览器询问用户要使用的文件名

如果保存到默认目录或提示用户保存到的位置,则完全取决于浏览器


您想要什么是不可能的。

作者可以建议将文件另存为的文件名(通过URL、
下载
属性或
内容配置
响应标题),但无法使浏览器询问用户要使用的文件名

如果保存到默认目录或提示用户保存到的位置,则完全取决于浏览器

你想要的是不可能的

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

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

我希望原力的“另存为”对话框具有相同的名称,并将其替换

这是不可能的

您只能指定在下载文件时向用户建议的文件名,但不能强制执行这方面的任何操作

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

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

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

我希望原力的“另存为”对话框具有相同的名称,并将其替换

这是不可能的

您只能指定在下载文件时向用户建议的文件名,但不能强制执行这方面的任何操作


如果浏览器设置为自动将此类下载保存到一个目录中,而无需任何进一步的用户交互,则根本无法对此进行任何操作(除了用户更改其设置);如果用户必须确认每次下载,则必须手动将自动建议的文件名
myFile(1.csv
更正为
myFile.csv
,然后才能保护文件,这样,他们将得到提示,确认是否要替换现有文件。

您已将问题的第一段标记为引用。你在引用谁的话?如果您没有引用任何人,请编辑问题,使其不被标记为引用。我认为解决方法是简单地在文件名后面附加某种字母数字短标记,有点像-
myfile\u 234wdfdf89sd
myfile\u adf09dfjddf
,因为没有这样的
内容配置
来指示浏览器,javascript不能这样做……您已经将问题的第一段标记为引用。你在引用谁的话?如果您没有引用任何人,请编辑问题,使其不被标记为引用。我认为解决方法是简单地在文件名后面附加某种字母数字短标记,有点像-
myfile\u 234wdfdf89sd
myfile\u adf09dfjddf
,因为没有这样的
内容配置
来指示浏览器,javascript不能这样做…”“大多数浏览器都会显示“另存为”对话框”-这不再是事实。多年来,大多数浏览器都只是将文件下载到默认的下载目录中,这是标准行为。“大多数浏览器都显示“另存为”对话框”——这不再是事实。多年来,大多数浏览器都只是将文件下载到默认的下载目录中作为标准行为。显然,我所寻找的是用户可以选择名称,因为直到现在他还不能这样做。那么这不是一个编程问题,而是一个接一个的问题