Beispiel #1
0
def download():
    """
    下载小说
    """
    id = request.args.get('id', int)

    novel_dao = NovelDAO(g.db, current_app.logger)
    novel = novel_dao.get_by_id(id)

    if not novel:
        abort(404)

    stream = StringIO()
    for content in novel_dao.get_contents(novel):
        stream.write(content.encode('utf-8'))
        stream.write('\n')
        
    content_length = stream.tell()
    stream.seek(0)
    resp = Response(stream)
    resp.headers.set("Content-Disposition", "attachment", filename=quote((novel.name + '.txt').encode('utf-8')))
    resp.headers.set("Content-Length", content_length)
    resp.headers.set("Content-Type", "application/octet-stream")

    return resp