Laravel流返回字符串而不是文件

时间:2018-08-06 15:10:46

标签: laravel laravel-5

我正在尝试下载在流中创建的文件,而不必将其写入磁盘。这是我的工作:

$response = new StreamedResponse(function() use ($csv_data) {
  // Open output stream
  $handle = fopen('php://output', 'w');
  foreach ($csv_data as $row) {
    fputcsv($handle, $row);
  }
  fclose($handle);

}, 200, [
  'Content-Type' => 'text/csv',
  'Content-Disposition'   => 'attachment; filename="legend.csv"',
]);


return $response;

这是我在chrome的网络标签中显示的屏幕: enter image description here

我根据文档使用StreamedResponse,但是它返回的是我的csvfile值的字符串(“ value1”,“ value2”,...),而不是csvfile本身。

此方法由有角度的应用程序调用。

我做错了什么?

编辑:

我尝试用表格制作:

        var form = angular.element('<form></form>');
        form.attr('action', 'http://myUrl/export-csv');
        form.attr('method', 'POST');
        var input = angular.element('<input></input>');
        input.attr('type', 'hidden');
        input.attr('name', 'data');
        input.attr('value', finalData);
        form.append(input);
        angular.element(document).find('body').append(form);
        form.submit().remove();

这也许可行,但是我有一些奇怪的事情,首先是表单重定向到URL,而不是向它发出发布请求,当他重定向时,我有一个ERR_INVALID_RESPONSE(但是URL存在并且数据很好=>我用邮递员测试,就可以了

0 个答案:

没有答案