我遇到的问题与this persion相同,但是我的POST请求包括NTLM身份验证。
简而言之,我正在尝试使用其Web API将文件上传到Sharepoint。以下代码“有效”,但由于python将-2a95cc93056b45e0b7c3447234788e29 Content-Disposition: form-data; name="file"; filename="hello.docx"
垃圾标头包含在上载的文件中,因此上载的docx文件已损坏。无论mime类型如何,都会发生这种情况。
POSTheaders = {'Accept':'application/json; odata=verbose',
'Content-Type':'application/json; odata=verbose',
'X-RequestDigest':FormDigestValue,
'binaryStringRequestBody':'true',
'WWW-Authenticate': 'NTLM'
}
posturl = my_server + "/_api/web/getfolderbyserverrelativeurl('my_folder')/files/add(url='hello.docx', overwrite='true')"
txtfile = {'file': ('hello.docx', open('docs/hello.docx', 'rb'), 'application/octet-stream')}
p = requests.post(posturl, headers=POSTheaders,files=txtfile, auth=HttpNtlmAuth(USERNAME,PASSWORD))
准备好的请求也“成功”上传了文件,但是,当我取消注释prepped.body行以尝试从上传的文件中删除http标头时,出现了“ www-authenticate”的KeyError >
s = Session()
s.header = POSTheaders
s.auth = HttpNtlmAuth(USERNAME,PASSWORD)
_request = Request('POST', posturl, files=txtfile, headers=POSTheaders,auth=HttpNtlmAuth(USERNAME,PASSWORD))
prepped = _request.prepare()
#prepped.body = "I want this".encode()
resp = s.send(prepped)