2013-10-30 131 views
0

我有一个PHP文件,将表单数据转换为CSV格式,然后它应该自动下载到用户的本地下载文件夹。下载CSV文件到本地下载的文件夹

$time = time(); 
$filename = 'exceldownloads/myreport_'.$time.'.csv'; 
$file = fopen($filename,'w'); 
fputcsv($file,$rowexcel); 

上面的代码工作正常,并将csv文件存储在服务器中的指定文件夹中。但我的要求是将其下载到本地文件夹。我已经看到上述问题的许多解决方案,但只有当我们知道本地目标文件夹时它们才能工作。但是,我的要求是将其下载到最终用户本地下载的文件夹(其下载位置Im不知道)。无论如何都要将其下载到最终用户系统,而不必特别提及目标路径。

+0

这就是我所做的......但没有文件被下载到我的本地下载文件夹中。 $ filename ='myreport'.time()。'。csv'; $ f = fopen($ filename,'w'); fputcsv($ f,$ rowexcel); header('Content-type:application/csv'); header('Content-Disposition:attachment; filename =''。$ filename。'“'); readfile($ filename); – user1808995

回答

2

您可以将网页的输出导出为附件,该附件将以用户下载的形式显示。您可以在向用户输出任何输出之前通过输出适当的标题来完成此操作。

下面是一个例子,创建一个下载一个名为foo.csv一个CSV文件:

header("Content-type: text/csv"); 
header("Content-Disposition: attachment;Filename=foo.csv"); 

输出头,您只输出文件的所有数据的页面内容之后。

* 编辑:*这里的工作片段,如要求:

header("Content-type: text/csv"); 
header("Content-Disposition: attachment;Filename=foo.csv"); 
echo implode(";", $rowexcel) . "\r\n"; // you should expand this accordingly 

另外,这里是另一个片段中,根据您的代码:

$filename = 'myreport'.time().'.csv'; 
$f = fopen($filename,'w'); 
fputcsv($f,$rowexcel); 
header('Content-type: application/csv'); 
header('Content-Disposition: attachment;filename="'.$filename.'"'); 
readfile($filename); 

如果你没有得到任何下载,确保在header()调用之前不输出任何内容。另外,请确保您的PHP文件开头没有任何UTF8 BOM字节,因为这些可能会被误解为输出

+0

您可以使用我的代码来描述一下吗..bcoz我多次看到这个解决方案,但由于我是新手程序员,所以无法应用它。我很感谢你的帮助 – user1808995

+0

准确地说,我应该通过什么来代替foo.csv,$ filename或$ file ...还有,我应该在代码中插入这两行标题 – user1808995

+0

现在我明白了......我实际上是编写代码来将文件存储在服务器中,然后尝试将其移动到本地..如果我只放置您的代码并删除上面发布的所有内容,它就可以工作。非常感谢。 – user1808995