权限被拒绝上传Django

时间:2019-04-25 21:10:04

标签: django

我正在尝试使用django(xlsx)上传文件,这是我的代码:

myfile = request.FILES['document']
fs = FileSystemStorage()
filename = fs.save(myfile.name, myfile)

在模型上,我设置了要上传的文件夹“ media”,出现此错误:

Permission denied: '/var/www/html/inventariosRG/media/my_file.xlsx'

此错误我正尝试解决:

  PATH = 'media/'
  myfile = request.FILES['document']
  try:
     import subprocess
     RUTA_ABSOLUTA = os.path.join(os.path.dirname(os.path.dirname(__file__)),PATH)
     subprocess.Popen('sudo chmod -R 777 '+RUTA_ABSOLUTA, shell=True)
  except Exception as e:
     raise Exception ("Error ",e)
 fs = FileSystemStorage()
 filename = fs.save(myfile.name, myfile)

此代码仅显示相同的错误“权限被拒绝...”,请尝试在django上通过命令设置权限,任何建议表示感谢.. !!

1 个答案:

答案 0 :(得分:1)

这些答案可能与777-ing有关,并且比777-ing更好: Django - Media upload [Errno 13] Permission denied

来自互联网的文件由用户'www-data:www-data'拥有,并且该用户的权限受到严格限制(因为来自互联网的文件可能是错误的。)您的Django media/文件夹必须为可访问和可写给www-data用户,因此使该用户成为该用户是合适的。

此外,无论如何我都不是系统管理员,我可能是出于无法识别的无知,但是在我的Django应用程序中使用sudo似乎对我来说是一个很大的安全隐患。

我可以看到'config'脚本的用法,该脚本可以确保新部署正确部署,但请确保该脚本和Django代码与互联网文件完全分开。如果出于某种原因需要将脚本自动化,则可以将其添加到/etc/sudoers中以赋予它所需的权限(但请记住使用sudoers编辑visudo)。