Мне трудно понять, как обрабатывать HTTP-запрос из загруженного файла в Django Rest Framework. Конечная точка create
в моем views.py :
def create(self, request):
file_iobytes = request.FILES["file"].file
self.zipping(file_iobytes)
serializer = FileSerializer(data=request.data) # converts to JSON
if serializer.is_valid():
serializer.save()
return Response(serializer.data, status=status.HTTP_201_CREATED)
def zipping(self, file):
# Create a buffer to write the zipfile into
zip_buffer = io.BytesIO()
# Create the zipfile, giving the buffer as the target
with zipfile.ZipFile(zip_buffer, 'w') as zip_file:
#file.seek(0)
zip_file.write(file)
file.close()
models.py
class File(models.Model):
file = models.FileField(upload_to='Myfiles/')
...
def __str__(self):
return self.file.name
serializers.py
class FileSerializer(serializers.ModelSerializer):
class Meta:
model = File
fields = '__all__'
read_only_fields = ('timestamp',)
Мое намерение таково:
- загрузить файл через DRF
- создать ха sh из файла, например, sha1 (чего я не делаю знаю, как напрямую, потому что для хеширования требуется путь, и я не знаю, как извлечь его из http-запроса).
- заархивировать файл и сохранить его
Как можно Я использую запрос для создания zip-файла (это правильный подход)?