我的 views.py 中有一个函数。是这样的
from django.core.files.uploadedfile import SimpleUploadedFile
def get_file(self, url):
# pdb.set_trace()
result = urllib.urlretrieve(url)
fi = open(result[0])
fi_name = os.path.basename(url)
suf = SimpleUploadedFile(fi_name, fi)
return suf
在创建 SimpleUploadedFile 对象时我收到错误消息
TypeError: file doesnot have buffer interface
我尝试将打开模式更改为“rb”。但仍然得到同样的错误 请帮帮我
最佳答案
SimpleUploadedFile需要实际的文件内容,而不是文件对象。所以你可以像这样修复你的代码:
suf = SimpleUploadedFile(fi_name, fi.read())
我必须说,虽然我不知道您为什么要使用 urlretrieve,它会将内容保存到本地临时文件,然后您必须打开并阅读该文件。最好使用 urlopen
并直接传递它:
result = urllib.urlopen(url)
fi_name = os.path.basename(url)
suf = SimpleUploadedFile(fi_name, result.read())
关于python - 文件没有缓冲接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28233164/