python - 文件没有缓冲接口(interface)

标签 python django

我的 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/

相关文章:

Python 跨平台桌面应用程序

python - 我应该如何使用独特的 slug 测试 Django View

javascript - 输入搜索在 Edge、IE 或 Firefox 中不起作用

python - 使用 Django 从 Flask 验证用户身份

python - subprocess.check_output 返回码

python - 使用 numpy 实现最大/平均池化(带步幅)

python - 如何在pyspark中保存没有日期的时间信息?

python - 如何根据Django中的某些字段查找重复记录

Django ORM : How can I filter based on an annotation timedelta result

python - 将变量放入 Python 字符串中