【问题标题】:File downloaded larger than original下载的文件比原始文件大
【发布时间】:2017-08-12 03:33:39
【问题描述】:

我正在开发一个小型 python3 服务器,我想从该服务器下载一个 sqlite 数据库。但是当我尝试这样做时,我发现下载的文件比原始文件大:原始文件大小为108K,下载文件大小为247K。我已经尝试了很多次,每次都得到相同的结果。我还用sha256检查了总和,结果不同。

这是我的 downloader.py 文件:

导入cgi
导入操作系统

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

db = os.path.realpath('..') + '/Library.db'
以 open(db,'rb') 作为文件:
    打印(file.read())

提前致谢!

编辑: 我试过了:
$ ./downloader > 文件
文件大小也是 247K。

【问题讨论】:

    标签: python-3.x cgi


    【解决方案1】:

    好吧,我终于找到了解决方案。问题(我没有首先看到)是服务器向客户端发送纯文本。这是发送二进制数据的一种方法:

    导入cgi
    导入操作系统
    进口舒蒂尔
    导入系统
    
    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'
    以 open(db,'rb') 作为文件:
        shutil.copyfileobj(文件,sys.stdout.buffer)
    

    但如果有人有更好的语法,我会很高兴看到它!谢谢!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-12-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-30
      • 1970-01-01
      相关资源
      最近更新 更多