首页 > 解决方案 > TypeError:需要一个类似字节的对象,而不是'_io.BytesIO' | 姜戈 | 枕头

问题描述

我一直在工作一个 Django 项目,我需要手动保存一个图像文件。所以,我尝试使用 PIL。这是我的 Django 视图中中断的代码-

import PIL.Image as PilImage
image_file = request.FILES.get("pic").file
image = PilImage.open(io.BytesIO(image_file))

我不明白,因为 io.BytesIO 是一个类似字节的对象,对吧?我在任何地方都找不到任何解决方案,因此我将不胜感激。

完整的错误如下 -

Traceback (most recent call last):
  File "G:\Workspace\Rabo\venv\lib\site-packages\django\core\handlers\exception.py", line 47, in inner
    response = get_response(request)
  File "G:\Workspace\Rabo\venv\lib\site-packages\django\core\handlers\base.py", line 181, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "G:\Workspace\Rabo\venv\lib\site-packages\django\views\generic\base.py", line 70, in view
    return self.dispatch(request, *args, **kwargs)
  File "G:\Workspace\Rabo\venv\lib\site-packages\django\views\generic\base.py", line 98, in dispatch
    return handler(request, *args, **kwargs)
  File "G:\Workspace\Rabo\App\utils\login_required.py", line 25, in wrapper
    return f(self, request, user_id)
  File "G:\Workspace\Rabo\App\views\user_views.py", line 125, in post
    image = PilImage.open(io.BytesIO(image_file))
TypeError: a bytes-like object is required, not '_io.BytesIO'

编辑:我现在使用这种方法保存图像,但我仍然想知道为什么 PIL 给出了那个错误。如果有人能对此有所了解,我将不胜感激。

标签: pythondjangopython-imaging-library

解决方案


您没有从中读取数据io.BytesIO(image_file)io.BytesIO(image_file).read()应该做的工作


推荐阅读