Python urllib2 文件上传问题

2022-01-09 00:00:00 python urllib2 post upload

问题描述

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

I'm currently trying to initiate a file upload with urllib2 and the urllib2_file library. Here's my code:

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 为 ).

I've placed this .py file in my My Documents directory and placed a shortcut to it in my Send To folder (the shortcut URL is ).

当我右键单击一个文件,选择发送到",然后选择Aquate"(我的 Python)时,它会在瞬间打开一个命令提示符,然后将其关闭.什么都没有上传.

When I right click a file, choose Send To, and select Aquate (my python), it opens a command prompt for a split second and then closes it. Nothing gets uploaded.

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

I knew there was probably an error going on so I typed the code into CL python, line by line. When I ran the u=urllib2.urlopen(req) line, I didn't get an error; alt text http://www.aquate.us/u/55245858877937182052.jpg

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

instead, the cursor simply started blinking on a new line beneath that line. I waited a couple of minutes to see if something would happen but it just stayed like that. To get it to stop, I had to press ctrl+break.

这个脚本是怎么回事?

提前致谢!

忘了提——当我在没有请求数据(文件)的情况下运行脚本时,它运行起来就像一个魅力.是 urllib2_file 的问题吗?

Forgot to mention -- when I ran the script without the request data (the file) it ran like a charm. Is it a problem with urllib2_file?

:

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()

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

That code works like a charm if you run it through the command line.


解决方案

如果您使用的是 Python 2.5 或更高版本,urllib2_file 既不必要也不支持,因此请检查您使用的是哪个版本(并可能升级).

If you're using Python 2.5 or newer, urllib2_file is both unnecessary and unsupported, so check which version you're using (and perhaps upgrade).

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

If you're using Python 2.3 or 2.4 (the only versions supported by urllib2_file), try running the sample code and see if you have the same problem. If so, there is likely something wrong either with your Python or urllib2_file installation.

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

Also, you don't seem to be using either of urllib2_file's two supported formats for POST data. Try using one of the following two lines instead:

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

相关文章