django上传图片报错'gbk' codec can't decode byte 0xaf in position 207: illegal multibyte sequence

在虚拟机ubuntu上配置了nginx和fastdfs文件系统后,我在window上使用Django框架自定义文件存储系统,但在windows的浏览器端测试admin的文件上传功能时,报了一个错误。

百度查找了各大技术博客关于这个报错的解决方法,都没有答案,似乎大家在django框架上使用fastdfs时都没有遇到这个问题。
(但有查到类似的问题,可以借鉴这位老哥的解决方法:https://blog.csdn.net/qq284489030/article/details/80561963)

报错内容如下:
Exception Value:
‘gbk’ codec can’t decode byte 0xaf in position 207: illegal multibyte sequence
Exception Location: C:\Users\Administrator\PycharmProjects\dailyfresh\venv\lib\site-packages\fdfs_client\utils.py in readfp, line 105
在这里插入图片描述
很明显,这是我们安装的fdfs_client-py-master.zip带来的问题,报错直接原因是fdfs_client\utils.py的第105行,'gbk’编码无法解码。查看源码如下:
在这里插入图片描述
由于是编码的问题,我尝试在fp.read()后面加上decode(‘gbk’)或decode(‘utf-8’)都无法解决问题。

中间我还尝试了很多方法,但都没有成功。

于是我思考了一下,这里无法解决问题,可能是调用它的函数有问题,继续看,发现在它上面的read()函数有调用它, 而在我们的自定义存储系统的FDFSStorage类同样有调用到read()函数,所以我严重怀疑是read()函数这里有编码问题
在这里插入图片描述
因此,我选择了在这里加上了encoding=‘gb18030’, errors=‘ignore’,如上图所示位置,然后再测试了上传文件,发现成功了。
在这里插入图片描述
但这个解决方法有个缺陷,我是直接修改了安装包的源码,不知道后续会不会带来其他问题,但是没办法了,目前也只能这么解决,如果你有其他更好的方法,欢迎留言。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值