我是网络技术的新手。在我的项目中,我需要将文件内容发送到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技术。
请指导我。感谢