gpt4 book ai didi

javascript - 如何使用Python/CGI进行文件上传

转载 作者:太空狗 更新时间:2023-10-29 15:02:32 25 4
gpt4 key购买 nike

我正在尝试制作一个文件 uploader 页面,该页面将提示用户输入文件并在显示进度的同时进行上传。

目前我已经设法制作了一个可以调用我的 python 脚本的简单 HTML 页面。然后 python 脚本将获取文件并以 1000 字节的 block 上传。

我有两个主要问题(主要是因为对此完全陌生):

1) 我无法获取文件大小来计算百分比2) 我不知道如何在服务器端 python 和页面中的任何内容之间进行通信以更新进度状态;大概是 javascript。

我是不是每件事都做错了?还是有办法解决我的问题?

这是我的python代码:

#!/usr/local/bin/python2.5 
import cgi, os
import cgitb; cgitb.enable()

try:
import msvcrt
msvcrt.setmode (0, os.O_BINARY)
msvcrt.setmode (1, os.O_BINARY)

except ImportError:
pass

form = cgi.FieldStorage()
upload = form['file']

if upload.filename:
name = os.path.basename(upload.filename)
out = open('/home/oetzi/webapps/py/' + name, 'wb', 1000)
message = "The file '" + name + "' was uploaded successfully"

while True:
packet = upload.file.read(1000)
if not packet:
break
out.write(packet)
out.close()
else:

message = "Derp... could you try that again please?"

print """\
Content-Type: text/html\n
<html><body>
<p>%s</p>
</body></html>
""" % (message,)

最佳答案

考虑到文件上传在 HTTP 协议(protocol)中的工作方式,这比看起来要复杂得多。大多数网络服务器只有在上传文件完全传输后才会将控制权交给CGI脚本,因此在此期间无法反馈。

不过,有一些 Python 库试图解决这个问题。例如:gp.fileupload (适用于 WSGI,而非 CGI)。

诀窍是提供一种通过 AJAX 查询上传进度的方法,同时仍然传输上传的文件。如果 Web 服务器(例如 Apache 或 nginx)未配置为支持上传进度功能,这将没有用,因为您可能会在进度条中看到 0% 到 100% 的跳跃。

我建议你试试 Plupload ,它在客户端工作并且更简单。

关于javascript - 如何使用Python/CGI进行文件上传,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4890820/

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