Я создаю REST API и не особо разбираюсь в Django. Я хотел бы опубликовать загруженный файл, но перед этим я хотел бы создать sha256
файла, например:
def sha256sum(filename):
h = hashlib.sha256()
b = bytearray(128*1024)
mv = memoryview(b)
with open(filename, 'rb', buffering=0) as f:
for n in iter(lambda : f.readinto(mv), 0):
h.update(mv[:n])
return h.hexdigest()
Чтобы это работало, мне требуется фактический файл (или путь к файлу), а не фактическое имя файла. Мой код в моих viewsets.py:
def create(self, request):
serializer = FileSerializer(data=request.data)
f = request.FILES["file"] # just gives the filename
print(request.META)
if serializer.is_valid():
f = serializer.save()
print(f"f: {f}")
res_name = sha256sum(f)
print(f"res_name: {res_name}")
return Response(serializer.data, status=status.HTTP_201_CREATED)
Есть идеи, где я ошибаюсь?