用php强制下载

时间:2017-09-27 10:03:32

标签: php download

我准备下载CSV文件。

我知道我几乎就在那里,因为此代码末尾的链接产生了正确的结果。我需要做的事情并且不了解它为什么不起作用,是以编程方式创建下载的文件(使用ob_start()中的示例)。如果我省略$filename = 'export.csv'; $data = fopen($filename, 'w'); while ($row = $sth->fetch(PDO::FETCH_ASSOC)) { fputcsv($data, $row); } fclose($data); if (file_exists($filename)) { ob_start(); header('Content-Description: File Transfer'); header('Content-Type: application/octet-stream'); header('Content-Disposition: attachment; filename="'.basename($filename).'"'); header('Expires: 0'); header('Cache-Control: must-revalidate'); header('Pragma: public'); header('Content-Length: ' . filesize($filename)); readfile($filename); ob_get_clean(); } ,我会收到"已发送标题"错误,如果我包括它们没有任何反应。

我做错了什么?

>>> from cerberus import Validator

>>> class MyValidator(Validator):
        def _validate_match_length(self, other, field, value):
            if other not in self.document:
                return False
            if len(value) != len(self.document[other]):
                self._error(field, 
                            "Length doesn't match field %s's length." % other)

>>> schema = {'a': {'type': 'list', 'required': True},
              'b': {'type': 'list', 'required': True, 'match_length': 'a'}}
>>> validator = MyValidator(schema)
>>> document = {'a': [1, 2, 3], 'b': [4, 5, 6]}
>>> validator(document)
True
>>> document = {'a': [1, 2, 3], 'b': [7, 8]}
>>> validator(document)
False

输出文件生成正常,我可以在服务器上看到它,并使用链接下载正确生成的有效CSV。它纯粹促使下载没有发生。

0 个答案:

没有答案