2017-08-12 1 views
0

私は少しpython3サーバで作業しています。このサーバからsqliteデータベースをダウンロードしたいと思います。しかし、私が試したところ、ダウンロードしたファイルがオリジナルよりも大きいことがわかりました。元のファイルサイズは108K、ダウンロードされたファイルサイズは247Kです。私はこれを何回も試みましたが、毎回同じ結果が出ました。私はまた、異なる結果を持っているsha256との合計をチェックしました。事前にファイルがオリジナルよりも大きくダウンロードされました

import cgi 
import os 

print('Content-Type: application/octet-stream') 
print('Content-Disposition: attachment; filename="Library.db"\n') 

db = os.path.realpath('..') + '/Library.db' 
with open(db,'rb') as file: 
    print(file.read())

ありがとう:

は、ここに私のdownloader.pyファイルです!

はEDIT:
は $ ./downloader>ファイル
ファイルのサイズは247Kでもある: は私がすることを試みました。

答えて

0

まあ、私は最終的に解決策を見つけました。 (私が最初に見たことのない)問題は、サーバーがプレーンテキストをクライアントに送信したことでした。ここでは、バイナリデータを送信するための一つの方法である:

import cgi 
import os 
import shutil 
import sys 

print('Content-Type: application/octet-stream; file="Library.db"') 
print('Content-Disposition: attachment; filename="Library.db"\n') 

sys.stdout.flush() 
db = os.path.realpath('..') + '/Library.db' 
with open(db,'rb') as file: 
    shutil.copyfileobj(file, sys.stdout.buffer) 

誰かがより良い構文を持っている場合、私はそれを見て喜んでいるだろう!ありがとうございました !

関連する問題