0

gzipモジュールを使用して作成および圧縮したファイルがあります。次に実行したいのは、そのファイルをWebブラウザーに接続するソケットに送信することです。Http応答のコンテンツタイプをapplication/gzipに変更する必要があることはわかっていますが、ブラウザが正しくダウンロードできるように、実際にgzipのバイナリを送信するにはどうすればよいですか?

これが私がこれまでに得たものです

f_out = gzip.open('downloads.gz', 'wb')
f_in = open('file.txt', 'rb')
f_out.writelines(f_in)
f_in.close()
f_out.close()
#This all works
.....
def make_http_response(self, content, html_type='text/html'):
        response_headers = {
            'Content-Type': html_type+'; encoding=utf8',
            'Content-Length': len(content),
            'Connection': 'close',
        }
        response_headers_string = ''.join('%s: %s\n' % (k, v) for k, v in   response_headers.iteritems())
        response_proto = 'HTTP/1.1'
        if(self.error):
            response_status = '404'
            response_status_text = 'Not Found' 
        else:
            response_status = '200'
            response_status_text = 'OK '
        response = '%s %s %s' %(response_proto, response_status, response_status_text)
        response = response + response_headers_string + '\n' + str(content)
        return response   

html_typeフィールドに「application/gz」を渡します

問題は、同じディレクトリに作成したばかりのdownload.gzファイルにどのコンテンツを渡すかです。バイナリをmake http応答関数に送信するにはどうすればよいですか?ありがとう

4

1 に答える 1

1

ファイルのバイナリ生データをメッセージの本文に入れるだけで、何も変更する必要はありません。

于 2012-09-12T08:39:39.307 に答える