无法从发布输入中获取值字符串-Mod wsgi

时间:2018-08-08 07:37:05

标签: python apache post html-parsing mod-wsgi

我不明白为什么我无法使用Apache24,mod wsgi和以下(Python 3.6.5)代码从html输入中保存文件值(字符串):

# -*- coding: UTF-8 -*-
import os
import sys
sys.path.append(os.path.dirname(__file__))
import urllib.parse

def application(environ, start_response):

    script_dir = os.path.dirname(__file__)

    f = open(os.path.join(script_dir, 'Wsgi_Apache.html'))
    output = f.read().encode('utf-8').strip()
    f.close()

    try:
        request_body_size = int(environ.get('CONTENT_LENGTH', 0))
    except (ValueError):
        request_body_size = 0

    request_body = environ['wsgi.input'].read(request_body_size)
    d = urllib.parse.parse_qs(request_body)
    #d = urllib.parse.parse_qs(environ['QUERY_STRING'])

    download = d.get('download', [''])[0]
    file = open(os.path.join(script_dir, 'down.txt'), 'w')
    file.write(download)
    file.close()

    status = '200 OK'

    response_headers = [('Content-type', 'text/html;charset=UTF-8'),
                    ('Content-Length', str(len(output)))]
    start_response(status, response_headers)

    return [output]

和HTML代码(Wsgi_Apache.html):

<!DOCTYPE html>
<html><body>
<form method="post" action="">
<input id="download" type="hidden" value="eijrgioerjboofphdpiappq" name="download">
</form>
</body>
</html>

已创建文件,但没有任何文本。 我想以值的形式发送pdf作为base64 ...也许有更好的方法吗?我知道这是一种较旧的技术,但我认为这是最简单的方法。

1 个答案:

答案 0 :(得分:0)

我发现 urllib.parse.parse_qs(request_body)返回空字典... 我仍在尝试解决此问题,但不知道为什么 request_body 中没有任何价值。