首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >尝试在python中发布多部分表单数据,无法发布

尝试在python中发布多部分表单数据,无法发布
EN

Stack Overflow用户
提问于 2011-07-28 03:38:39
回答 2查看 9.3K关注 0票数 4

我是python的新手,所以如果我遗漏了一些简单的东西,我要提前道歉。我正在尝试用python将数据发布到一个多部分的表单。脚本运行,但不能开机自检。我不确定我做错了什么。

代码语言:javascript
运行
复制
import urllib, urllib2
from poster.encode import multipart_encode
from poster.streaminghttp import register_openers

def toqueXF():
    register_openers()
    url = "http://localhost/trunk/admin/new.php"
    values = {'form':open('/test.pdf'),
              'bandingxml':open('/banding.xml'),
              'desc':'description'}
    data, headers = multipart_encode(values)
    request = urllib2.Request(url, data, headers)
    response = urllib2.urlopen(request)
    the_page = response.read()
    print the_page

当我调用它时,print会给我页面的html,就好像我运行了"urllib2.urlopen(url)“并且没有发布任何数据:

代码语言:javascript
运行
复制
<form enctype="multipart/form-data" action="" method="post">
    <p><input type="hidden" name="MAX_FILE_SIZE" value="1000000000" /></p>
    <p>Select PDF file to create form from: <input name="form" type="file" /></p>
    <p>(Optional): Select banding XML file: <input name="bandingxml" type="file" /></p>
    <p>Enter description of form: <input name="desc" type="text"/><br/></p>
    <p><input type="submit" value="Upload form" /></p>
</form>

poster用于将数据编码为多部分/表单数据,可在此处找到:http://atlee.ca/software/poster/index.html

我在这里找到了使用poster的代码:Using MultipartPostHandler to POST form-data with Python

如果任何人感到好奇,我尝试在为queXF (一种开源光学标记识别软件)生成pdf和xml条带文件后,自动发布它们。http://quexf.sourceforge.net/

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-07-28 23:52:05

代码语言:javascript
运行
复制
import urllib, urllib2
from poster.encode import multipart_encode
from poster.streaminghttp import register_openers

def queXF():
    register_openers()
    url = "http://lilix2/trunk/admin/new.php"
    values = {'form':open('test.pdf'),
          'bandingxml':open('banding.xml'),
          'desc':'description'}
    data, headers = multipart_encode(values)
    headers['User-Agent'] = 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'
    request = urllib2.Request(url, data, headers)
    request.unverifiable = True
    response = urllib2.urlopen(request)
    the_page = response.read()

添加headers['User-Agent']request.unverifiable = True似乎已经修复了这个问题。

票数 1
EN

Stack Overflow用户

发布于 2012-12-21 15:44:51

尝试使用requests库。有关发布多部分文件的文档在此:http://docs.python-requests.org/en/latest/user/quickstart/#post-a-multipart-encoded-file

票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6850239

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档