Повреждение файлов при загрузке файлов csv и zip через postman в направлении django rest api

  • Здравствуйте, я использую django 4.0.6 (python 3.8) с djangorestframework 3.13.1 на windows. Я тестирую на localhost свое приложение с postman и postman agent в актуальном состоянии.
  • .
  • Авторизация JWT работает нормально.
  • Если я загружаю изображение или txt, файлы в порядке.
  • Если я загружаю csv или zip файлы, они приводят к повреждению файлов. Только короткие файлы csv загружаются правильно,
  • длинные csv файлы приводят к поврежденным строкам в нижней части текста с такими символами: Û™eÞqHÂÔpŠl°'<û yjϪ'kÃx'Ûr-¥x¡S¼à2SÕkÛår'mÒÕµd5ÿ¶Vê0@1 ̦Záë1§ŠIÇaÎ
    . ''ÏÛ€t'vRoT'-‡Qf'¾´é-Oa)]ЧK'5C¤sWB0),3 Zž-2¸Ñóo'jŸH'
  • Я не могу понять, как это исправить, читая другие сообщения, я не смог найти решение, которое подходит к этой ситуации.
  • Спасибо за любое предложение!

Вот моя модель:

class FileUploader(models.Model):
id_file = models.AutoField('id_file', primary_key=True)
Campaign_Name = models.CharField('Campaign_Name', max_length=255)
ViewpointSurvey = models.FileField('ViewpointSurvey',upload_to=path_and_rename_base,max_length=255,blank=False,null=False,db_column='ViewpointSurvey', name='ViewpointSurvey')
ProjectSurvey = models.FileField('ProjectSurvey', upload_to=path_and_rename_base, max_length=255, blank=False, null=False,
                        db_column='ProjectSurvey', name='ProjectSurvey')
Trajectories = models.FileField('Trajectories', upload_to=path_and_rename_base, max_length=255, blank=False, null=False,
                        db_column='Trajectories', name='Trajectories')
screenshots = models.FileField('screenshots', upload_to=path_and_rename_base, max_length=255, blank=False,
                                null=False,
                                db_column='screenshots', name='screenshots')
timestamp=models.DateTimeField('timestamp',auto_now_add=True,db_column='timestamp', name='timestamp')
id_project=models.CharField('id_project', max_length=255)
class Meta:
    db_table = "file_uploader"
    verbose_name_plural = 'file_uploader'
    verbose_name = "file_uploader"

Вот вид:

class CSVUploadAPI(GenericAPIView):
parser_classes = [MultiPartParser]
serializer_class = UploadSerializer

def put(self, request):
    data_collect = request.data
    serializer = UploadSerializer(data=data_collect)
    if serializer.is_valid():
        serializer.save()

Вот сериализатор:

class UploadSerializer(serializers.ModelSerializer):
class Meta:
    model= FileUploader
    fields = ('id_project','ProjectSurvey','Trajectories','ViewpointSurvey','screenshots','Campaign_Name')

Вот функция path_and_rename_base:

def path_and_rename_base(instance, filename):
upload_to = 'files/'
ext = filename.split('.')[-1]
# set filename as random string
filename = '{}.{}'.format(uuid.uuid4(), ext)    
return os.path.join(upload_to, filename)

Вот заголовки почтальона заголовки postman

Вот тело почтальона тело почтальона

Вернуться на верх