当我使用我的脚本提交帖子请求时,我不对数据进行编码并准备帖子请求:
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
<file content>
--6ab0a06f1ddc432186194dd48355eac1--
然而,通过firefox上传的文件没有这些标头。我认为我需要调用一个sharepoint函数(如果有一个REST API可以执行此操作)来在文件上传后处理文件,或者python请求中是否存在可以处理掉这些头文件的方法如本帖所述:stackoverflow post
答案 0 :(得分:0)
如果它适用于Firefox,它通常也可以用于python请求模块。
您是否仔细检查requests docs相对于“后多段编码文件”?
在Firefox:网络标签下的firebug中,您可以右键单击该请求,然后选择“复制为cURL”以进行复核...
答案 1 :(得分:0)
不要使用multipart / form-data 即 在curl世界中,使用&#34; - data-binary&#34; @ testFile.xls&#34;而不是-F upload =&#34; @ testFile.xls&#34;