Django SuspiciousFileOperation - PullRequest
       23

Django SuspiciousFileOperation

0 голосов
/ 27 марта 2019

У меня есть модель, которая содержит FileField:

class Foo(models.Model):
    fileobj = models.FileField(upload_to="bar/baz")

Я создаю файл и сохраняю его в / tmp / как часть метода save.Этот файл затем должен быть установлен как «fileobj» экземпляра модели.

В настоящее время я пытаюсь это:

with open(
    f"/tmp/{self.number}.pdf", "r"
) as h:
    self.fileobj = File(h)

К сожалению, это не с: django.core.exceptions.SuspiciousFileOperation:,потому что файл существует за пределами проекта django.

Я пытался читать документы, но они не сильно помогли.Принимает ли django файл и, назначив его как FileField, переместить в каталог мультимедиа, или мне нужно вручную поместить его туда, прежде чем присоединять его к экземпляру модели.Если во втором случае, какой смысл "upload_to"?

1 Ответ

0 голосов
/ 27 марта 2019

Вы можете использовать InMemoryUploadedFile объект, подобный этому.

        import os
        import io
        with open(path, 'rb') as h:
            f = InMemoryUploadedFile(io.BytesIO(h.read()), 'fileobj',
                                     'name.pdf', 'application/pdf',
                                     os.path.getsize(path), None)
            self.fileobj = f
...