Python urllib2文件上传问题

标签 python post upload urllib2

我目前正在尝试使用 urllib2 和 urllib2_file 启动文件上传图书馆。这是我的代码:

import sys
import urllib2_file
import urllib2

URL='http://aquate.us/upload.php'
d = [('uploaded', open(sys.argv[1:]))]
req = urllib2.Request(URL, d)
u = urllib2.urlopen(req)
print u.read()

我已将此 .py 文件放在我的文档目录中,并在我的“发送到”文件夹中放置了它的快捷方式(快捷方式 URL 是 )。

当我右键单击一个文件,选择“发送到”,然后选择“Aquate(我的 python)”时,它会瞬间打开一个命令提示符,然后将其关闭。未上传任何内容。

我知道可能存在错误,所以我将代码逐行输入到 CL python 中。 当我运行 u=urllib2.urlopen(req) 行时,我没有收到错误; alt text http://www.aquate.us/u/55245858877937182052.jpg

相反,光标只是开始在该行下方的新行上闪烁。我等了几分钟,想看看是否会发生什么,但它就一直这样。要让它停止,我必须按 ctrl+break。

这个脚本怎么了?

提前致谢!

[编辑] 忘了提——当我在没有请求数据(文件)的情况下运行脚本时,它运行得非常棒。是urllib2_file的问题吗?

[编辑 2]:

import MultipartPostHandler, urllib2, cookielib,sys
import win32clipboard as w
cookies = cookielib.CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookies),MultipartPostHandler.MultipartPostHandler)
params = {"uploaded" : open("c:/cfoot.js") }
a=opener.open("http://www.aquate.us/upload.php", params)
text = a.read()
w.OpenClipboard()
w.EmptyClipboard()
w.SetClipboardText(text)
w.CloseClipboard()

如果您通过命令行运行该代码,它就像一个魅力。

最佳答案

如果您使用的是 Python 2.5 或更新版本,则 urllib2_file 是不必要且不受支持的,因此请检查您使用的是哪个版本(并可能升级)。

如果您使用的是 Python 2.3 或 2.4(urllib2_file 支持的唯一版本),请尝试运行 the sample code看看你是否有同样的问题。如果是这样,您的 Python 或 urllib2_file 安装可能有问题。

编辑:

此外,您似乎没有使用 urllib2_file 的两种支持的 POST 数据格式。尝试使用以下两行中的一个:

d = ['uploaded', open(sys.argv[1:])]
## --OR-- ##
d = {'uploaded': open(sys.argv[1:])}

关于Python urllib2文件上传问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/407468/

相关文章:

python - django 模型对象过滤器

angularjs - 从发送 http post 请求的 submit() 更改 $scope 变量

javascript - 如何将WebRTC捕获的照片发布到服务器

json - Dispatch 和 Scala 中使用 JSON 进行 POST 请求

angular - 拖放图片上传,angular 4

http - Golang文件上传: close connection if file is too large

html - 为什么浏览器控制输入类型文件按钮?

python - 生成随机数 a、b、c 使得 a^2 + b^2 + c^2 = 1

python - 如何优化递归函数

python - 是否存在用于处理/规范化表示为字符串的时间单位的现有 python 模块?