使用Python连接PHP页面并上传图片

0 投票
3 回答
1632 浏览
提问于 2025-04-16 11:02

我想知道能不能用Python连接到某个网站

(例如:http://www.example.com/python)

然后从电脑上传一张图片。基本上,我有一个Python脚本可以从摄像头获取图片。现在在获取到图片后,我该怎么把这张图片发送到网页上。如果你告诉我怎么连接到那个页面,我可以处理后面的事情。提前谢谢你!

这是我手头的Python脚本:

from VideoCapture import Device

cam = Device(devnum=1)
cam.saveSnapshot('image.jpg', timestamp=3, boldfont=1)

3 个回答

0

当然可以。打开文件,然后使用urllib这个库:

imgfile = open("image.jpg", "rb")
urllib.urlopen("http://www.example.com/", imgfile.read())
2

可以使用 urllib2 来实现这个功能。简单来说,就是创建一个 urllib2.Request 对象,里面放上你要请求的 PHP 脚本的 URL,然后用 add_data 方法把你想提交的图片数据加进去。

补充说明: 你可以参考 这里 的示例,特别是 这个例子,可以帮助你更好地理解整个过程。

1

我建议你学习“mechanize”这个库,链接在这里:http://wwwsearch.sourceforge.net/mechanize/。它非常好用。

下面是我脚本中的一个例子。

def upload_and_get_data(username, password, image_filename):
    print image_filename, type(image_filename)
    browser = mechanize.Browser()
    browser.open("http://itmages.ru/user/login")
    form = browser.form = browser.forms().next()
    form["LoginForm[username]"] = username
    form["LoginForm[password]"] = password
    login_response = browser.submit()

    # file uploading
    form = browser.form = browser.forms().next()
    form.add_file(open(image_filename, "r"),
                  filename=os.path.basename(image_filename))
    send_response = browser.submit()

    table_regex = re.compile('<table class="stat".*?<input.*?</table>')
    table_data_text = table_regex.findall(
        send_response.get_data().replace("\n", " "))[0]
    table_data_regex = re.compile(
        '<tr> *<td.*?<b>([^<]*)</b></td> *<td>(.*?)</td> *</tr>')
    table_data = dict(table_data_regex.findall(table_data_text))
    return table_data

撰写回答