Не удается получить информацию о FileVersion при загрузке файла в бэкэнд Django? - PullRequest
0 голосов
/ 27 марта 2019

Я пытаюсь загрузить файл в мое облако.Когда я загружаю этот файл, мне также нужно получить информацию о его версии.

Пример запроса POST ( Body ), как показано ниже (это без сценария FileVersionInfo ):

[POST Data[1]

Теперь, когда я пытаюсь загрузить файл, я получаю следующую ошибку:

Error, while trying to fetch FileVersion Info

Может кто-нибудь объяснить мне, как с этим справиться ( Файл не найден Ошибка )?Я могу ошибаться, придерживаясь этого подхода, но может ли кто-нибудь предложить мне лучший подход?

Моя модель django определена следующим образом:

import os
import win32api

from django.db import models
from custom.storage import AzureMediaStorage as AMS

class File(models.Model):
    '''
    File model
    '''
    file = models.FileField(blank=False, storage=AMS(), null=False)
    filetype = models.CharField(max_length=25, default="")
    timestamp = models.DateTimeField(auto_now_add=True)
    version = models.CharField(max_length=25, default="")
    remark = models.CharField(max_length=100, default="")


    @property
    def get_file_type(self):
        return os.path.splitext(str(self.file))[1]

    @property
    def get_version(self):
        """
        Read all properties of the given file and return them as a dictionary.
        """
        props = {'FileVersion': None}

        # For Debugging (This returns False) 
        print("Is the file there? ", os.path.isfile(str(self.file)) )

        # To get the FileVersion information
        fixedInfo = win32api.GetFileVersionInfo(str(self.file), '\\')
        print("FixedInfo: ", fixedInfo)

        props['FixedFileInfo'] = fixedInfo
        props['FileVersion'] = "%d.%d.%d.%d" % (fixedInfo['FileVersionMS'] / 65536,
                fixedInfo['FileVersionMS'] % 65536, fixedInfo['FileVersionLS'] / 65536,
                fixedInfo['FileVersionLS'] % 65536)

        # For Debugging
        print("Type of props['FileVersion']:", type(props['FileVersion']))
        print("props['FileVersion']: ", props['FileVersion'])

        return props['FileVersion']

    def save(self, *args, **kwargs):
        self.filetype = self.get_file_type
        self.version = self.get_version
        super(File, self).save(*args, **kwargs)
...