Как загрузить и сохранить файл pickle в django rest framework?
Как сказано в заголовке, я пытаюсь загрузить model.pkl и сохранить его в API, сделанном на django. Мне удается правильно сохранить model.pkl в API, однако файл загружается в поврежденном виде, потому что я не могу прочитать файл pickle.
Я открыт для любых решений, которые позволят загрузить, сохранить и прочитать файл pickle в API.
Класс для загрузки файла и его сохранения
class FileUploadView(APIView):
parser_classes = (FileUploadParser,)
def put(self, request):
file = request.data.get('file', None)
file_name = f'path/{file.name}'
path = default_storage.save(name=file_name, content=ContentFile(file.read()))
tmp_file = os.path.join(settings.MEDIA_ROOT, path)
if file is not None:
return Response(f'File: {file.name} successfully uploaded and saved!', status=HTTP_200_OK)
else:
return Response(f'File not found!', status=HTTP_400_BAD_REQUEST)
Ошибка при чтении файла
def read_PickleModel(path_to_PickleModel):
with open(path_to_PickleModel, 'rb') as f:
pickle_model = pickle.load(f)
return pickle_model
read_PickleModel(path_to_PickleModel)
Traceback:
DEBUG: An exception has ocurred: invalid load key, '-'.
Я новичок в этом, пожалуйста, прежде чем голосовать, скажите мне, как вы думаете, как я могу улучшить вопрос, чтобы получить точное решение.
При использовании FileUploadParser все тело запроса должно быть содержимым файла, не отправляйте файл как данные формы.
Чтобы сделать это в Postman, выберите "binary" в качестве типа данных вместо "form-data" и выберите ваш файл там
Для установки имени файла необходимо установить заголовок "Content-Disposition" и передать attachment; filename=<your_filename.ext>