您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

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

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

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

在GAE上的POST处理程序中:

from google.appengine.api import urlfetch
from poster.encode import multipart_encode
payload = {}
payload['test_file'] = self.request.POST['test_file']
payload['user_id'] = self.request.POST['user_id']
to_post = multipart_encode(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)
@H_301_6@

确保您的HTML表单包含method="POST" enctype="multipart/form-data"@H_301_6@。希望这可以帮助!

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

import webapp2
from google.appengine.api import urlfetch
from poster.encode import multipart_encode, MultipartParam

class 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_encode(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>""")
@H_301_6@
python 2022/1/1 18:40:20 有259人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶