我正在尝试使用 Windows 命令提示符中的 cURL 命令将文件发送到服务器。但收到错误消息为"{"detail":"JSON parse error - No JSON object could be decoded"}"。但是使用邮递员我可以将文件发送到服务器。下面给出详细信息。
这些是我尝试通过仅发送文件位置来发送/上传文件的两个 cURL 命令:
curl --insecure -F user_file=@"C:/Users/402096/Desktop/dau_settings-123.conf" -H "Content-Type: application/json" -H "Authorization: Token 3f98d0a178ddd176faea94e6d629621920d203b2624550e68a" -X POST https://10.107.12.123/import_config
curl --insecure -F "user_file=@C:/Users/402096/Desktop/dau_settings-123.conf" -H "Content-Type: application/json" -H "Authorization: Token 3f98d0a178ddd176faea94e6d629621920d203b2624550e68a" -X POST https://10.107.12.123/import_config
这是我的代码,它将被调用以在 django 中上传文件
@api_view(["POST", "GET"])
@permission_classes((IsAuthenticated,))
@permission_required('dau_gui_app.execute_import_config')
def import_config_view(request):
if request.method == 'POST' and request.FILES['user_file']:
user_file = request.FILES['user_file']
fs = FileSystemStorage()
filename = fs.save( user_file.name, user_file)
filePath = fs.location + "/" + filename
print filePath
message ="{\
\"command\":\"execute\",\
\"subcommand\":\"import_config\",\
\"args\": [{\"file_path\":\"" + filePath + "\"}]}"
message.replace(" ", "")
try:
response = send_cmd(message)
except:
print("An exception occurred sending the message:")
print(message)
#end try
fs.delete(filename)
return HttpResponse(response, content_type='application/json')
return render(request, 'dau_gui_app/import_config.html' ,{'title':"Import Configuration" })
注意: 我可以使用邮递员成功上传文件。当我查看邮递员用来上传/发送文件的 cURL 代码时,我在邮递员中看到了下面的 cURL。但是当我在 Windows 命令提示符下键入相同的命令时,会出现与语法和格式相关的错误。
curl -X POST 'https://10.107.12.123/import_config' -H 'Content-Type: application/json' -H 'Authorization: Token 3f98d0a178ddd176faea94e6d629621920d203b2624550e68a' -H 'Cookie: csrftoken=wC4LbjwDsh5BkRPi7TgwZN2FbQLMMpuz; sessionid=7xq7jv95j50k6lkojbrkp2ndgfczfe9v' -F 'user_file=@/C:/Users/402096/Desktop/dau_settings-123.conf'
请帮助我如何使用 Windows 命令提示符中的 cURL 将文件发送/上传到我的 django 服务器。不知道我在这里错过了什么