我正在尝试使用 xlrd.open_workbook(( 打开文件,但收到错误:
expected str, bytes or os.PathLike object, not InMemoryUploadedFile
这是我的代码:
def upload(request):
if request.method == 'POST':
form = UploadFileForm(request.POST, request.FILES)
if form.is_valid():
handle_file(request.FILES['file'])
def handle_file(f):
book = xlrd.open_workbook(f)
传递文件的正确方法是什么?
更新
找到解决方案:
book = xlrd.open_workbook(file_contents=f.read())
您需要传递路径,而不是文件。
要访问上传文件的路径,我通常执行以下操作:
uploaded_file = request.FILES["file"]
fs = FileSystemStorage()
name = fs.save(uploaded_file.name, uploaded_file)
path = fs.path(name)
像这样导入文件系统存储
from django.core.files.storage import FileSystemStorage
您可以删除该文件,以防您不需要它,这样
fs.delete(name)
希望有帮助。