0

我一直在尝试创建可下载的内容。我正在使用webapp2.RequestHandler,我有以下场景:

  1. 我正在使用 Jinja 2 创建一个带有“将其下载为 csv”链接的页面。
  2. 当您单击该链接时,文件已正确下载,以正确的内容开头,最后添加了模板内容。

这是我的课:

class xmlAnalyzer(Handler):
    def get(self):
        displaySample = self.request.get('SamplePage')
        downloadMapping = self.request.get('downloadMapping')

        if downloadMapping:
            r = self.request.get('srcTgtMapping')
            srcTgtMapping = r.split('], [')

            csvContents = 'Column name; Source name; Source type; Column name; Target name; Target type;\n'
            self.response.headers['Content-Disposition'] = 'attachment; filename=' + str(downloadMapping) +'.csv'
            self.response.out.write(csvContents)

        elif displaySample == '2':
            testString = 'abracadabra'
            self.response.headers['Content-Disposition'] = 'attachment; filename=' + 'testFile.csv'
            self.response.write(testString)

现在,虽然第二种情况可以正常工作(如果SamplePage=2提供了参数),但文件只包含单词“abracadabra”。然而,在第一种情况下,下载的文件如下所示:

Column name; Source name; Source type; Column name; Target name; Target type;
<!DOCTYPE html>

<link rel="stylesheet" type="text/css" href="/stylesheets/styles.css">
<Content-Type: text/html; charset=utf-8>
<html>
<body class="body">

<div class="main-title">Welcome to XML Analyzer for Informatica PowerCenter</div>

第一行是我所期望的。但这应该是全部。剩下的就是模板——知道为什么要添加它吗?提前致谢!

4

1 回答 1

0

很难说,但凭直觉,根据您向我们展示的代码来决定,我猜它要么......

  • self.response.out.clear()第一个if块中的有关 - 第二个没有它;
  • 或通过 webapp2 框架自动呈现模板;但这并不能解释为什么这两种情况的行为不同,所以这就是让我注意到那个self.response.out.clear()调用的原因。

PS顺便说一句,你确定你已经向我们展示了你所有的相关代码吗?

于 2013-10-01T09:02:44.817 回答