【问题标题】:Getting isMultipartContent = false while using python poster library使用 python 海报库时获取 isMultipartContent = false
【发布时间】:2011-03-17 06:05:28
【问题描述】:

我正在使用 python 海报库尝试将包含图像的表单上传到 servlet。在本地,它运行良好,但是当我部署到应用程序引擎时,它不会将其识别为多部分内容。

ServletFileUpload.isMultipartContent(request) 返回 false

这是我使用海报库的方式:

register_openers()
datagen, headers = multipart_encode({"image": open(filename)})
request = urllib2.Request(url, datagen, headers)

servlet 检查以确保它是 Multipart,但它未能通过该检查。我该怎么做才能进一步调试?

谢谢, 牛仔裤

*********更新********* 打印出堆栈跟踪...这就是我得到的。它抱怨内容类型标头为空

org.apache.commons.fileupload.FileUploadBase$InvalidContentTypeException:请求不包含 multipart/form-data 或 multipart/mixed 流,内容类型标头为 null 在 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)

【问题讨论】:

    标签: python google-app-engine file-upload multipartform-data poster


    【解决方案1】:

    如果您使用的是 Windows(或学究;-),open(filename) 是打开二进制文件的错误方法,可能会搞砸——请使用 open(filename, 'rb')。除此之外,当然假设您继续使用您省略的urllib2.urlopen(request),您的imports 是正确的,并且filenameurl 之前已正确设置,那么您的代码似乎是合法的。

    【讨论】:

    • 感谢您的提示。是的,我跟着 urllib2.urlopen(request) 和其他一切都正确设置并在本地运行我的 appengine 应用程序时按预期运行。部署后,它会命中 servlet,但 servlet 拒绝该请求,因为我进行了检查以确保它是多部分的。
    • @jeanh,我想知道这个检查是否正确——在 servlet 上,你能不能“转储”它正在获取的确切字节流(到文件、日志等)并查看它它与发送的内容有何不同?
    • 也刚刚检查过,在本地运行时,request.getContentType 看起来不错。部署到应用引擎后,它为空。
    猜你喜欢
    • 1970-01-01
    • 2012-07-04
    • 1970-01-01
    • 2012-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-27
    • 2012-05-19
    相关资源
    最近更新 更多