改用sendfile实现文件下载，并重构代码