django-rest-framework - “错误:‘InMemoryUploadedFile’对象没有属性‘split’”
问题描述
我正在尝试使用 Django 创建一个 API 并使用 POSTMAN 对其进行测试。
尝试使用以下代码测试 API 时出现错误
@api_view(['POST','GET'])
def predict_plant_disease(request):
try:
if request.body:
request_data = request.data["plant_image"]
image_data = request_data.split(';base64,')
image_array,err_msg =image_converter.convert_image(request_data)
if err_msg == None :
model_file = f"{BASE_DIR}/ml_files/cnn_model.pkl"
saved_classifier_model = pickle.load(open(model_file,'rb'))
prediction = saved_classifier_model.predict(image_array)
label_binarizer = pickle.load(open(f"{BASE_DIR}/ml_files/label_transform.pkl",'rb'))
return_data = {
"error" : "0",
"data" : f"{label_binarizer.inverse_transform(prediction)[0]}"
}
else :
return_data = {
"error" : "4",
"message" : f"Error : {err_msg}"
}
else :
return_data = {
"error" : "1",
"message" : "Request Body is empty",
}
except Exception as e:
return_data = {
"error" : "3",
"message" : f"Error : {str(e)}",
}
return HttpResponse(json.dumps(return_data), content_type='application/json; charset=utf-8')
我在外部 if 循环的第二行收到错误,因为“InMemoryUploadedFile”对象没有属性“split”。 帮我解决这个错误。
从 POSTMAN API 请求结果时显示错误的屏幕截图。
解决方案
从屏幕截图中,很明显您以文件的形式提供输入,而在代码中,图像被接受为编码的 base64 形式。
将输入作为图像的编码 base64 形式给出。这种编码可以使用任何编码网站在线完成。 https://www.base64-image.de/
推荐阅读
- php - Cloud Firestore 说 Code 14 Unavailable in all request PHP
- javascript - React-Day-Picker-禁用日期并从日期范围中选择
- python - 向圆环图添加值标签(不是百分比) - matplotlib
- node.js - 使用nodejs将base64 btoa写入文件
- arrays - 在 Google 表格中使用 COUNTIFS 和可能的空白条件
- typescript - moment.js 对象的 JSDoc typedef 声明
- c++ - 使用递归的数组总和错误(编译和运行时)
- c# - 使用 iText 7,导出 Flate 编码图像的正确方法是什么?
- r - dplyr 的问题(将 which.min 应用于数据帧列表)
- sql - 文本上的 CASE 逻辑在转换数据类型错误时提供数字结果