使用python poster库时获取isMultipartContent = false
我正在使用Python的poster库,试图上传一个包含图片的表单到一个servlet。 在本地运行时一切正常,但当我部署到应用引擎时,它无法识别为多部分内容。
ServletFileUpload.isMultipartContent(request) 返回 false
这是我使用poster库的方式:
register_openers()
datagen, headers = multipart_encode({"image": open(filename)})
request = urllib2.Request(url, datagen, headers)
这个servlet会检查请求是否是多部分的,但检查失败了。我该怎么做才能进一步调试呢?
谢谢,
jean
*******更新*********
打印出堆栈跟踪...这是我得到的结果。它抱怨内容类型头是空的。
org.apache.commons.fileupload.FileUploadBase$InvalidContentTypeException: 请求不包含 multipart/form-data 或 multipart/mixed 流,内容类型头是空的
在 org.apache.commons.fileupload.FileUploadBase$FileItemIteratorImpl.(FileUploadBase.java:885)
在 org.apache.commons.fileupload.FileUploadBase.getItemIterator(FileUploadBase.java:331)
在 org.apache.commons.fileupload.FileUploadBase.parseRequest(FileUploadBase.java:349)
在 org.apache.commons.fileupload.servlet.ServletFileUpload.parseRequest(ServletFileUpload.java:126)
1 个回答
如果你在使用Windows系统(或者你是个较真的人;-),那么用 open(filename)
来打开一个二进制文件是不对的,可能会搞砸事情——应该用 open(filename, 'rb')
。除此之外,假设你继续使用 urllib2.urlopen(request)
(你没有提到这一点),并且你的 import
语句是正确的,另外 filename
和 url
之前设置得也没问题,那么你的代码看起来是没问题的。