这是我在本地测试的一些代码,应该可以解决这个问题(我使用了与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>""")
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)