在Appengine python中使用multipartform-data发布请求不起作用

在Appengine python中使用multipartform-data发布请求不起作用,第1张

在Appengine python中使用multipart / form-data发布请求不起作用

这是我在本地测试的一些代码,应该可以解决这个问题(我使用了与webapp2不同的处理程序,但尝试将其修改为webapp2。您还需要在以下位置找到发帖人库http://atlee.ca/software/poster/):

在GAE上的POST处理程序中:

from google.appengine.api import urlfetchfrom poster.enpre import multipart_enprepayload = {}payload['test_file'] = self.request.POST['test_file']payload['user_id'] = self.request.POST['user_id']to_post = multipart_enpre(payload)send_url = "http://127.0.0.1:8000/"result = urlfetch.fetch(url=send_url, payload="".join(to_post[0]), method=urlfetch.POST, headers=to_post[1])logging.info(result.content)

确保您的HTML表单包含

method="POST" enctype="multipart/form-data"
。希望这可以帮助!

编辑:
我尝试使用webapp2处理程序,并意识到提供文件的方式与我以前使用测试框架(KAY)的方式不同。这是应该起作用的更新代码(已在生产中测试):

import webapp2from google.appengine.api import urlfetchfrom poster.enpre import multipart_enpre, MultipartParamclass UploadTest(webapp2.RequestHandler):  def post(self):     payload = {}    file_data = self.request.POST['test_file']    payload['test_file'] = MultipartParam('test_file', filename=file_data.filename,         filetype=file_data.type,         fileobj=file_data.file)    payload['name'] = self.request.POST['name']    data,headers= multipart_enpre(payload)    send_url = "http://127.0.0.1:8000/"    t = urlfetch.fetch(url=send_url, payload="".join(data), method=urlfetch.POST, headers=headers)    self.response.headers['Content-Type'] = 'text/plain'    self.response.out.write(t.content)  def get(self):    self.response.out.write("""    <html>        <head> <title>File Upload Test</title>        </head>        <body> <form action="" method="POST" enctype="multipart/form-data">     <input type="text" name="name" />     <input type="file" name="test_file" />     <input type="submit" value="Submit" /> </form>        </body>    </html>""")


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5617502.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-15
下一篇 2022-12-15

发表评论

登录后才能评论

评论列表(0条)

保存