根据要求,创建一个新文件夹并从linux命令行上传文件到SharePoint网站的示例脚本。 完整的SharePoint路径是这样的:
的http:// mysite的/ MyFirstSPSite /报告/ [current_iso_date]/[uploaded_file.txt]
#!/usr/bin/python2.4
import datetime as dt
import sys
from suds.transport.https import WindowsHttpAuthenticated
from suds.sax.element import Element
from suds.sax.element import Attribute
from suds import client
from ntlm import HTTPNtlmAuthHandler
import urllib2
import os.path
FOLDER = dt.date.today().strftime("%Y-%m-%d") #folder name that will be created
FNAME = sys.argv[1] #file name to upload
SITE = "http://mysite/MyFirstSPSite"
FURL = "%s/Reports/%s/%s" % (SITE,FOLDER,os.path.basename(FNAME))
USER = "uk\\user_name_goes_here" # AD user name
PASS = "password_goes_here"
def main():
wss_lists = client.Client("%s/_vti_bin/lists.asmx?WSDL" % SITE,transport=WindowsHttpAuthenticated(username=USER,password=PASS))
wss_dws = client.Client("%s/_vti_bin/dws.asmx?WSDL" % SITE,transport=WindowsHttpAuthenticated(username=USER,password=PASS))
wss_dws.service.CreateFolder("Reports/%s" % FOLDER)
print uploadReport(FURL,sys.argv[1])
wss_lists.service.UpdateListItems("Reports",getUpdatesElement(FURL,"Title goes here"))
def getUpdatesElement(furl,title = ''):
b = Element("Batch")
b.append(Attribute("OnError","Continue")).append(Attribute("ListVersion","3"))
bm= Element("Method")
bm.append(Attribute("ID","1")).append(Attribute("Cmd","Update"))
bm.append(Element("Field").append(Attribute("Name","ID")).setText(''))
bm.append(Element('Field').append(Attribute('Name','FileRef')).setText(furl))
bm.append(Element('Field').append(Attribute('Name','CustomProperty1')).setText('Value1'))
bm.append(Element('Field').append(Attribute('Name','CustomProperty2')).setText('Value2'))
bm.append(Element('Field').append(Attribute('Name','Title')).setText(title))
b.append(bm)
u = Element("ns1:updates")
u.append(b)
return u
def uploadReport(furl,fname):
pm = urllib2.HTTPPasswordMgrWithDefaultRealm()
pm.add_password(None,'http://mysite',USER,PASS)
op = urllib2.build_opener(HTTPNtlmAuthHandler.HTTPNtlmAuthHandler(pm))
#import pdb;pdb.set_trace()
fh = open(fname)
data = fh.read()
fh.close()
req = urllib2.Request(furl,data=data)
req.get_method = lambda: 'PUT'
req.add_header('Content-Type','text/csv')
r = op.open(req)
return r.read()
if __name__=="__main__": main()
希望帮助:)
我不应该发布自己的问题的答案,我应该吗? > :) – Dave 2010-04-20 13:55:48
不,这有助于我们其他人尝试做类似的事情。感谢发布!真的很感激它。 – vinod 2012-10-29 10:52:14