0

我有一个使用 django 框架在 python 中开发的应用程序的问题,它使用 FPDF 库导出文件,然后应用程序使用该文件将其附加到自动电子邮件。

当此应用程序导出 PDF 并将其保存到media目录时,该文件不会从其父目录继承权限,并且只有读/写权限,这不允许 Django 找到该文件,因此可以将其附加到邮件中.

我在网上搜索,发现有同样问题的人,建议他们使用ACL配置来管理默认权限,我用不同的方法尝试了很多次,但没有成功。我不知道我做错了什么(我一直有同样的错误)。在进行 ACL 配置之后,文件继续以相同的权限导出,并且在应用命令时chmod 777 -R *这些文件并没有更改它们的权限,我必须禁用 ACL 配置以允许我应用该命令。

这是出现的错误:

Internal Server Error: /treasury/sendMailsSupplierView/SBOJOZF
Traceback (most recent call last):
  File "/var/www/johannasenvironment/venvjoh/lib/python3.6/site-packages/django/core/handlers/exception.py", line 47, in inner
    response = get_response(request)
  File "/var/www/johannasenvironment/venvjoh/lib/python3.6/site-packages/django/core/handlers/base.py", line 181, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "/var/www/johannasenvironment/JohannasEnviroment/treasuryEmails/views.py", line 33, in sendMailsSupplierView
    sendEmailSupplier('narvaezsebas8@gmail.com', report) #sendEmailSupplier(emailSupplier, report)
  File "/var/www/johannasenvironment/JohannasEnviroment/treasuryEmails/mails/mailsFunctions.py", line 50, in sendEmailSupplier
    email_traslado.attach_file(report)
  File "/var/www/johannasenvironment/venvjoh/lib/python3.6/site-packages/django/core/mail/message.py", line 330, in attach_file
    with path.open('rb') as file:
  File "/usr/lib/python3.6/pathlib.py", line 1183, in open
    opener=self._opener)
  File "/usr/lib/python3.6/pathlib.py", line 1037, in _opener
    return self._accessor.open(self, flags, mode)
  File "/usr/lib/python3.6/pathlib.py", line 387, in wrapped
    return strfunc(str(pathobj), *args)
FileNotFoundError: [Errno 2] No such file or directory: 'media/PaySuppiler--27022022142925.pdf'

这是最新的未应用文件的样子sudo chmod 777 *

administrador@WEB-APPLICATION:/var/www/johannasenvironment/JohannasEnviroment/media$ ls -l
total 396
-rw-r--r-- 1 www-data www-data 133492 feb 27 09:17 PaySuppiler--27022022141734.pdf
-rw-r--r-- 1 www-data www-data 133492 feb 27 09:28 PaySuppiler--27022022142833.pdf
-rw-r--r-- 1 www-data www-data 133492 feb 27 09:29 PaySuppiler--27022022142925.pdf
administrador@WEB-APPLICATION:/var/www/johannasenvironment/JohannasEnviroment/media$

这些是media目录的权限:

drwxrwxrwx  2 administrador administrador  16384 feb 27 09:29 media
4

1 回答 1

0

您能否检查正在访问的路径是否正确。根据媒体文件夹中文件的权限,每个用户都具有读取权限,并且您正在尝试读取文件(以二进制形式)。

这个错误(FileNotFoundError: [Errno 2] No such file or directory: 'media/PaySuppiler--27022022142925.pdf')表明路径不正确。尝试使用基于文件的相对路径,例如 os.path.join(os.path.realpath( file ), "../media/PaySuppler--27022022142925.pdf")

为什么我会收到 FileNotFoundError?

于 2022-02-27T15:22:51.653 回答