[英]Creating download link for user generated csv file on App Engine
我在尝试创建一个下载链接时遇到问题,该链接将(1)原位生成CSV文件,并且(2)自动开始下载而没有重定向到另一个页面(即AJAX请求)。
发生的情况如下:我没有看到任何JavaScript错误,并且处理程序CSVDownload也没有任何问题地执行。 但是,下载永远不会开始。 出于某种原因,如果我只输入URL(..website ../ csvdownload),则它确实使用相同的处理程序创建了文件。 知道为什么会这样吗?
任何帮助将不胜感激!
HTML
<button id="mainReportDownload" type="button">
Download Report
</button>
AJAX请求
$('#mainReportDownload').on('click', function() {
$.ajax({
type: 'GET',
url: "/csvdownload",
beforeSend: function() {
notification('Creating report..','info',false)
}
});
});
蟒蛇
def List2CSV(data):
csv = ""
for row in data:
for item in row:
csv = csv + item + ','
csv = csv[:-1] + '\n'
csv = csv[:-1]
return csv
class CSVDownload(webapp2.RequestHandler):
def get(self):
conn = rdbms.connect(instance=_INSTANCE_NAME, database='test')
cursor = conn.cursor()
cursor.execute('SELECT email FROM Test LIMIT 100')
testvalues = [[item for item in row] for row in cursor.fetchall()]
csv = List2CSV(testvalues)
self.response.headers['Content-Type'] = 'text/csv'
self.response.headers['Content-Disposition'] = 'attachment; filename=report.csv'
self.response.out.write(csv)
conn.close()
您有矛盾的要求。 当浏览器导航到一个URL,该URL发送回“附件”内容处置时,就会进行正常下载。 但是您正在尝试使用无法导航的Ajax,因此没有完成下载。 Ajax正在愉快地阅读内容,但随后只是将其丢弃,因为您没有定义成功的处理程序来告诉它如何处理。 而且,当然,即使您确实定义了该处理程序,出于明显的安全原因,Javascript也无法将文件保存到用户的计算机。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.