【发布时间】:2020-09-29 17:10:14
【问题描述】:
我的后端有一个上传网址,我想在另一台服务器上上传一个文件。
我的 API 视图:
class AssessmentFileUpload(APIView):
parser_classes = (MultiPartParser, )
def post(self, request, format=None):
tenant = request.user.tenant.id
response = AssessmentFileUploadHelper(tenant).upload_file(request.FILES)
response_text = json.loads(response.text)
print(response_text)
if response.status_code == status.HTTP_201_CREATED:
return Response({"message": "success", "id": response_text.get('id')}, status=status.HTTP_201_CREATED)
return Response({"message": "failed"}, status=status.HTTP_400_BAD_REQUEST)
我的类将请求数据发送到另一个服务器的 url:
class AssessmentFileUploadHelper:
def __init__(self, tenant_id):
self.tenant_id = tenant_id
def upload_file(self, file):
print("FILE IS", file)
url = settings.ASSESSMENT_CONNECTION_SETTINGS["api_endpoint"] + "tenant/" + \
str(self.tenant_id) + "/fileupload/"
return RequestSender().send_request(url,None, file)
class RequestSender:
def __init__(self):
super().__init__()
def __get_authorized_header(self):
usernamepassword = settings.ASSESSMENT_CONNECTION_SETTINGS["userid"] + ":" + settings.ASSESSMENT_CONNECTION_SETTINGS["password"]
userAndPass = b64encode(usernamepassword.encode("utf-8")).decode("ascii")
authorization = "Basic " + userAndPass
headers = {'Authorization': authorization, "Content-Type": "application/json"}
return headers
def send_request(self, url, data, files=None):
json_data = json.dumps(data)
response = requests.post(url,
data=json_data,
headers=self.__get_authorized_header(),
files=files
)
return response
现在,我得到的错误是 InMemoryUploadedFile is not json serilizaable 。如何将 request.FILES 发送到该服务器?
【问题讨论】:
-
你能写出
print(response.text)的输出吗?该值似乎不是有效的 json 结构。 -
响应不存在,因为它抛出错误
-
你提到的同样的错误?
print(response)的值怎么样? -
我会更新我的问题
-
知道了。尝试查看
request变量(post 函数)中写入的内容。
标签: django django-rest-framework