Python 为什么上传的图像权限取决于它';s码?

Python 为什么上传的图像权限取决于它';s码?,python,django,nginx,centos,gunicorn,Python,Django,Nginx,Centos,Gunicorn,使用Django框架构建Web应用程序 服务器:CentOS Linux 7.1.1503版(核心版) Nginx:Nginx版本:Nginx/1.6.3 Gunicorn:Gunicorn==19.3.0 Django:Django==1.8.4 上传小于2.7M的图像时,一切正常 映像是在服务器上创建的,它应该在服务器上(MEDIA\u ROOT) 用户组和读取权限:-rw-r--r--1 tb360 tb360 图像由web服务器提供,没有问题 但当图像大小超过2.7M 映像是在服务器

使用Django框架构建Web应用程序

  • 服务器:
    CentOS Linux 7.1.1503版(核心版)
  • Nginx:
    Nginx版本:Nginx/1.6.3
  • Gunicorn:
    Gunicorn==19.3.0
  • Django:
    Django==1.8.4
上传小于
2.7M的图像时,一切正常

  • 映像是在服务器上创建的,它应该在服务器上(
    MEDIA\u ROOT
  • 用户组和读取权限:
    -rw-r--r--1 tb360 tb360
  • 图像由web服务器提供,没有问题
  • 但当图像大小超过
    2.7M

  • 映像是在服务器上创建的,它应该在服务器上(
    MEDIA\u ROOT
  • 图像未经读取权限:
    -rw------1 tb360 tb360
  • web服务器不提供映像服务 原因:对文件没有读取权限
  • 在我向这样的图像添加了读取权限之后,web服务器将毫无问题地为其提供服务

    在本地开发机器上进行测试时,没有类似的问题


    Django正在使用两个上载处理程序:
    MemoryFileUploadHandler
    TemporaryFileUploadHandler
    。第一个将把上传的文件保存在ram中,然后再决定如何处理它。第二个将把文件放在临时目录中,稍后将其移动到适当的位置

    出现此问题的原因可能是内存处理程序将只处理特定大小的文件,并且您的系统对临时目录具有不同的默认文件权限。将文件从临时文件移动到您的
    媒体\u根目录
    时,将保留该权限


    您可以通过设置(使文件始终具有适当的权限)或(将临时文件存储在不同的位置,而不设置更严格的文件权限)来解决该问题

    谢谢你的解释!我增加了我的价值。非常感谢。到目前为止,我已经注意到不同的权限取决于文件大小,但您的调查节省了我很多时间。