我准备下载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。它纯粹促使下载没有发生。