使用python在sharepoint上传文件会导致上传文件在内容中保留标题

时间:2016-11-18 18:34:01

标签: python sharepoint http-headers

当我使用我的脚本提交帖子请求时,我不对数据进行编码并准备帖子请求:

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

2 个答案:

答案 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;