gpt4 book ai didi

javascript - 服务器端 python 返回一个 zip 文件以供下载

转载 作者:行者123 更新时间:2023-11-29 20:39:27 26 4
gpt4 key购买 nike

我使用我的客户端通过 get 将参数传递给服务器上的 python 脚本,它运行一个进程并创建一个 zip 文件。在我的客户端 JavaScript 中,我的 ajax 调用只是告诉我它能够将数据传递给我的 python 脚本。

我试过 sys.stdout.write(b"zipfilename") 但没有任何反应。如果我不能传回文件,有没有办法传回一些东西让我的 JavaScript 知道它已经完成了?我没有使用 NODE 或 Angular。我的 python 脚本确实在服务器上运行并创建了 zip 文件,但 JavaScript 页面不知道它,也没有出现下载对话框。我缺少一些基本的东西,但找不到。

我的 JS AJAX 调用:

  $.ajax({
url: theUrl,
type: 'get',
success: function(response){

} });

我的 python 脚本的结尾:

def createZip(v, charset=None):

with ZipFile(v +'.zip', 'w') as myzip:
myzip.write(v +'.shp')
myzip.write(v +'.shx')
myzip.write(v +'.dbf')
myzip.write(v +'.prj')

return 'c:/dev/python/'+ v + '.zip'

createZip(fn)

最佳答案

根据提供的有限代码很难判断,但这里有一些一般要点:

  • sys.stdout.write 将写入运行 Python 脚本的应用程序的输出,而不是写入 HTTP 响应(除非它作为 WSGI 应用程序运行)。
  • 如果您在 WSGI 类型的应用程序中编写 HTTP 响应,那么您将需要包括整个 HTTP 响应主体,包括多部分和内容类型 header ,以便浏览器知道返回了什么(否则它只是无意义字节的提要)。
  • 仅当浏览器加载返回 application/octet-stream 内容类型的页面(或在链接到文件的 anchor 上设置了 download 属性时)才会出现下载提示。
  • AJAX 调用不会导致在前台浏览器中进行下载,它会出现在开发人员工具的“网络”选项卡中,并且 AJAX 响应变量会包含数据,但这不会自动推送到浏览器作为可下载的文件。

关于javascript - 服务器端 python 返回一个 zip 文件以供下载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55976188/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com