从laravel中的数组不正确输出下载文件

时间:2015-12-07 11:10:55

标签: php csv laravel

尝试使用laravel下载文件。不想把文件放在公共文件夹中,因为我需要写日文字符,所以需要bom和utf8字符集。

代码如下

  header('Content-Encoding: UTF-8');
  header('Content-type: text/csv');
  header('Content-Disposition: attachment; filename=Customers_Export.csv');
  echo "\xEF\xBB\xBF"; // UTF-8 BOM
  $string = '21, 133, 3232';
  echo $string;
  exit();

但是我们的输出就像下面我们得到两个额外的空行而日语字符是不正确的

**Output in csv**   
  

空行

     

空行

     

21 133 3232

这样做的正确方法是什么?

2 个答案:

答案 0 :(得分:2)

您可以使用response()->download()从任意位置下载文件。

我是这样做的:

$headers = array
(
    'Content-Encoding: UTF-8',
    'Content-Type' => 'text/csv',
);
return response()->download($path, $file_name, $headers);

例如,我的应用位于/var/www/appname,我的文件位于/storage/appname,因此这些文件不公开。

答案 1 :(得分:1)

这里有一个很大的惊喜......

我找到了空白行的原因..这是路线文件中的php标记之前的空行!!!

令人惊讶的是我删除了那里的空行,我的csv文件中也没有空白行...