将文本文件内容发送到Web浏览器的最佳方法是什么,文件大小约为100兆字节?

时间:2017-11-06 16:14:56

标签: python apache mod-wsgi werkzeug windows2012

我是网络技术的新手。在我的项目中,我需要将文件内容发送到Web浏览器。文件大小从几KB到100 MB不等。尝试将大文件大小的内容发送到浏览器时,浏览器无法显示完整的文件内容。

首先,我尝试使用基本方法打开文件并读取其内容,将数据作为响应数据发送到浏览器。但是这种方法并不适合大文件。

我按照格雷厄姆·杜普顿的this link的建议尝试了第二种方法。

我也尝试过使用X-SendFile方法。

通过所有方法,我仍然在努力渲染大型文件数据。

添加了代码段。

def sendFileContent(filePath, block_size=8192):
    fileObject = open(filePath, 'rb')
    data = ''
    try:
        data = fileObject.read(block_size)
        while data:
            yield data
            data = fileObject.read(block_size)
    finally:
        try:
            data.close()
        except Exception:
            pass

def application(environ, start_response):
    filepath = 'C:\logs\ABC.txt'
    filesize = os.path.getsize(filepath)
    start_response('200 OK', [('Content-type', 'text/plain'),
                            ('Content-Length', str(filesize)),])

    file_wrapper = environ.get('wsgi.file_wrapper', None)
        if file_wrapper:
            filelike = open(filepath, 'rb')
            return file_wrapper(filelike, 8192)

        return sendFileContent(filepath)

在Apache配置中,我还在'上创建了' EnableSendfile。变化。

上述方法的问题在于,当我尝试打开100 MB文件浏览器时,在60-65 MB之后停止渲染。我的意思是,我可以看到第一个60-65 MB文件的内容,其余只是空白。浏览器允许我向上滚动到文件末尾,但在60-65 MB之后没有内容显示。

我在Windows上使用Apache 2.4,Python 3.5,MOD_WSGI,Werkzeug技术。

请指导我。感谢

0 个答案:

没有答案