我遇到的问题与问题并不完全相同,但我认为可能是相似的,我可以给出一些提示。
我正在使用 django rest 框架的请求而不是 pylons 请求。
如果我编写如下简单代码:
@api_view(['POST'])
@renderer_classes([JSONRenderer])
def upload_files(request):
file_obj = request.FILES['file']
from xlrd import open_workbook
wb = open_workbook(file_contents=file_obj.read())
result = {"code": "0", "message": "success", "data": {}}
return Response(status=200, data=result)
在这里,我们可以使用前面评论中提到的 open_workbook(file_contents=file_obj.read()) 来阅读。
但是,如果您按以下方式编写代码:
from rest_framework.views import APIView
from rest_framework.parsers import MultiPartParser
class FileUploadView(APIView):
parser_classes = (MultiPartParser,)
def put(self, request, filename, format=None):
file_obj = request.FILES.get('file')
from xlrd import open_workbook
wb = open_workbook(file_contents=file_obj.read())
# do some stuff with uploaded file
return Response(status=204)
您必须注意使用 MultiPartParser 而不是 FileUploadParser,使用 FileUploadParser 会引发一些 BOF 错误。
所以我想知道它也受到你如何编写 API 的影响。