Python 为什么上传的图像权限取决于它';s码?
使用Django框架构建Web应用程序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 映像是在服务器
- 服务器:
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根目录
时,将保留该权限
您可以通过设置(使文件始终具有适当的权限)或(将临时文件存储在不同的位置,而不设置更严格的文件权限)来解决该问题 谢谢你的解释!我增加了我的价值。非常感谢。到目前为止,我已经注意到不同的权限取决于文件大小,但您的调查节省了我很多时间。