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


download file from array improper output in 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

做这件事的正确方法是什么?

Sooo这里出现了一个大惊喜。。

我已经找出了空行的原因。。在路由文件中,php标记之前的那一行是空的!!!

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

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

我是这样做的:

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

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