簡體   English   中英

如何將泡菜文件上傳並保存到 django rest 框架?

[英]How to upload and save a pickle file to a django rest framework?

正如標題中所說,我正在嘗試上傳 model.pkl 並將其保存在 django 制造的 API 中。 我設法將 model.pkl 正確保存在 API 中,但是文件以損壞的方式上傳,因為我無法讀取泡菜文件。

我願意接受任何可以在 API 中上傳、存儲和讀取泡菜文件的解決方案。

Class 上傳文件並保存

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, '-'.

我是新手,請在投票之前告訴我您認為我可以如何改進問題以獲得准確的解決方案。

Postman

在此處輸入圖像描述 在此處輸入圖像描述

使用FileUploadParser時,請求的整個主體應該是文件內容,不要將文件作為表單數據發送。

為此,請在 Postman、select “二進制”而不是“表單數據”和 select 作為數據類型中執行此操作

在此處輸入圖像描述

要設置文件名,您需要設置 header "Content-Disposition" 並傳遞attachment; filename=<your_filename.ext> attachment; filename=<your_filename.ext>

在此處輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM