使用python请求模块我执行多部分发布到sharepoint。该文件(在本例中为microsoft pptx文件)已成功上载。但是,当我尝试打开上传的文件时,文件存在问题。
Powerpoint请求修复文件,当我按下修复程序时,文件确实打开了(我没有发现任何遗漏)。
我查看了请求标题,并注意到当帖子通过firefox浏览器发生时内容长度不同,而不是通过我的脚本发布帖子。
磁盘上的文件大小= 17,938,612
我的脚本的内容长度= 17,938,874
内容长度与firefox = 17,939,026
我想我不知道为什么内容长度不同,我怀疑是否因为这种差异而发生这种情况。
当我使用我的脚本提交帖子请求时,我不对数据进行编码并准备帖子请求:
postheader.update({'Accept':'application/json; odata=verbose','Content-Type':'application/json; odata=verbose', 'X-RequestDigest':formdigestvalue, 'binaryStringRequestBody':'true'})
filetoupload = {'file':(filename, open(filename, 'rb'), 'application/vnd.openxmlformats-officedocument.presentationml.presentation')}
posturl = projectConfig.sharepointurl + "/_api/web/getfolderbyserverrelativeurl('Shared Documents/release_doc/"+project+"')/files/add(url='"+filename+"', overwrite='true')"
response = requests.post(posturl, headers=postheader, files=filetoupload, cookies=postcookies)
更新:
我查看了使用我的脚本上传的文件,并且内容中仍附有以下标题:
--6ab0a06f1ddc432186194dd48355eac1
Content-Disposition: form-data; name="ZZZ Technology Guide.pptx"; filename="ZZZ Technology Guide.pptx"
Content-Type: application/vnd.openxmlformats-officedocument.presentationml.presentation
Expires: 0
<file content>
--6ab0a06f1ddc432186194dd48355eac1--
然而,通过firefox上传的文件没有这些标头。我认为我需要调用一个sharepoint函数(如果有一个REST API来执行此操作)来处理文件上传后的文件,或者python requests
中是否有可以处理的方法关闭这些标题,如本文所述:stackoverflow post