【问题标题】:How to get dynamic url of file uploaded to sharepoint using python?如何使用python获取上传到sharepoint的文件的动态url?
【发布时间】:2021-02-18 08:48:20
【问题描述】:

我的代码每天都会执行以下任务:

  1. 在 sharepoint.DONE 上创建一个日期文件夹
  2. 在sharepoint的日期文件夹中创建一个分类文件夹。完成
  3. 上传相应类别文件夹中的文件。完成

4.找到文件的url。待处理

  1. 通过电子邮件发送网址。完成

     def upload_files(base_url, site, access_token, fileName, filePath, fileFolderUrl):
         try:
             fileHandle = open(filePath, 'rb')
    
             #fileFolderUrl = f'Shared Documents/Output/{subFolder}'
             requestFileUploadUrl = f"{base_url}/{site}/_api/web/GetFolderByServerRelativeUrl('{fileFolderUrl}')/Files/add(url='{fileName}',overwrite=true)"
    
             headers = {
                'Accept':'application/json; odata=verbose',
                'Content-Type':'application/json; odata=verbose',
                'Authorization': 'Bearer {}'.format(access_token)
            }
             uploadFileResult = requests.post(requestFileUploadUrl, headers=headers, data=fileHandle)
             if uploadFileResult.status_code == 200:
                 return "success"
             else:
                 return "failure"
         except Exception as e:
             print(f"Error in uploading files to sharepoint:{e}")
             return "error"
    

有人可以帮助我了解获取此文件的 url 的过程,我需要使用 python3+ 在 sharepoint 上动态创建的文件夹中上传该文件的 url? 所以,结构是:SharedDocuments/Output/Today's Date/CategoryA/file.xlsx

【问题讨论】:

  • 我不明白。如果您能够将文件上传到该文件夹​​。为什么无法获取网址?您已经知道路径和文件名。我错过了什么?
  • 我正在使用 sharepoint api 上传文件,我需要与用户共享 url 以在浏览器中查看。与用户分享的url会不同,使用API​​时,方法也不同。
  • 是分享链接吗?
  • 为了清楚起见,我已经更新了上面有问题的 upload_file 代码。它需要共享文件路径的链接,但还没有这样做,因为我无法获得链接。 Sharepoint API 文档如下:docs.microsoft.com/en-us/sharepoint/dev/sp-add-ins/…
  • @HobbyCoder,你有没有得到这个答案?我在同一条船上。

标签: python-3.x sharepoint sharepoint-2013 sharepoint-online sharepoint-designer


【解决方案1】:

一种解决方案是手动创建 URL,因为您已经知道 url、站点和文件名。

我发现您可以创建链接以使用此模式共享文件: <base_url>/<site>/<FileFolderUrl>/<File>?&web=1

例如:https://company.sharepoint.com/sites/test/Documents%20partages/testing.jpg?&web=1

它只适用于已经有权访问它的人。

我还没有在自动解决方案中进行测试,而只是以经验的方式手动测试

【讨论】:

  • 有时路径中有特殊字符,例如空格或一些括号或连字符。这会在生成路径时产生问题,因此我一直在寻找通过 Sharepoint API 的通用解决方案。
【解决方案2】:

我知道这已经很久了,但今天滚动浏览它并想回答它。希望以后能对大家有所帮助。

    def get_out_file_url(base_url, site, access_token, file_folder, fileName):
       """
       These are random examples of file_folder and base_url
       file_folder = 'Shared Documents/Output/Dated/Category'
       base_url = 'https://company.sharepoint.com'
       """
       requestFileGetUrl = f'{base_url}/sites/{site}/_api/web/GetFolderByServerRelativeUrl(\'' + fileUrl + '/'+ '\')/files?$filter'
       headers = {
               'Accept':'application/json; odata=verbose',
               'Content-Type':'application/json; odata=verbose',
               'Authorization': 'Bearer {}'.format(access_token)
           }
       getFileResult = requests.get(requestFileGetUrl, headers=headers)
       values = getFileResult.json()
       fileData = values['d']['results']
       for key in fileData:
           if key['Name'] == fileName:
               fileURLLink = key['ServerRelativeUrl']
               fileCreatedTime = key['TimeCreated']
               fileLastModified = key['TimeLastModified']
               fileNewUrl = base_url + urllib.parse.quote(fileURLLink)
               return fileNewUrl
       else:
           return file_folder

【讨论】:

    猜你喜欢
    • 2015-12-30
    • 2020-01-05
    • 1970-01-01
    • 2020-08-19
    • 1970-01-01
    • 1970-01-01
    • 2016-01-08
    • 1970-01-01
    • 2018-12-28
    相关资源
    最近更新 更多