Python - 下载本地文件

时间:2015-05-03 23:36:23

标签: python urllib

一个python cgi脚本让我搜索一个sqlite数据库,并向我提供一个文件的链接供下载。这些文件是web目录之外的目录中的所有本地文件。 我尝试过:

 if os.access(filepath, os.R_OK):

这已经给我一个错误args = 13,Permission denied。

接下来我在想我该怎么做:

  

file_to_open =“file://”+ file_to_download

     

了urllib.urlopen(file_to_open)

不幸的是我必须先处理错误。 正如我测试了一些事情:

  • 文件存在,否则我收到其他错误

  • chmod 777 chown

  • 文件和dir到apache的正在运行的用户

我陷入困境,不知道是否以及如何让Python在webroot之外下载文件。

1 个答案:

答案 0 :(得分:0)

如果文件应该可以通过Web应用程序访问,则必须由apache用户读取。这是设计的 - 任何不能被apache用户阅读的内容都无法通过网络访问。

由于您可能不希望将chown这些文件发送给apache用户(这可能允许Web用户修改它们),您基本上有两种选择:

  • 将文件组设置为apache用户组(使用chgrp)并让该组的任何用户(chmod g+r FILE...)可以读取它们,或者

  • 使文件对服务器上的任何进程都可读(chmod o+r FILE...)。

确保apache用户至少对文件的所有父目录执行(+x)权限,否则这将无效。

您还可以使用单独的服务将这些文件提供给Web应用程序,但这要复杂得多(您可能不会需要它)。