0

我正在使用python海報庫嘗試上載包含圖像的表單到servlet。在本地,它運行良好,但是當我部署到應用程序引擎時,它不會將其識別爲多部分內容。使用python海報庫時獲取isMultipartContent = false

ServletFileUpload.isMultipartContent(請求)返回false

這裏是我如何使用海報庫:

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

的Servlet檢查,以確保它是多部分,但它無法入住手續。我能做些什麼來進一步調試?

感謝, 牛仔

*******更新********* 打印出堆棧跟蹤......這裏就是我得到。它抱怨內容類型標頭isnull

org.apache.commons.fileupload.FileUploadBase $ InvalidContentTypeException:請求不包含multipart/form-data或multipart/mixed流,內容類型標頭爲空 at 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)

回答

0

如果您使用的是Windows(或pedan t ;-),open(filename)是打開一個二進制文件的錯誤方式,可能會搞砸 - 使用open(filename, 'rb')。除此之外,假設你繼續使用你已經省略的urllib2.urlopen(request),你的import是正確的,並且filenameurl以前是正確設置的,那麼你的代碼似乎是合法的。

+0

感謝您的提示。是的,我跟隨urllib2.urlopen(請求)和其他一切設置正確,並在本地運行我的appengine應用程序時按預期運行。部署時,它會碰到servlet,但是servlet拒絕了請求,因爲我有一個檢查來確保它是多部分的。 – jeanh 2010-07-17 10:05:08

+0

@jeanh,我想知道這個檢查是否正確 - 在servlet中,你可以「轉儲」它所獲得的確切字節流(進入文件,日誌等等),然後點擊它來查看它與發送內容的區別? – 2010-07-17 15:08:19

+0

也剛剛檢查,當在本地運行時,request.getContentType看起來很好。在我部署到應用程序引擎後,它是空的。 – jeanh 2010-07-19 20:06:16