使用 Graph API 将图像上传到 Sharepoint 不包含任何内容 (.NET)
Uploaded Image to Sharepoint using Graph API contains no Content (.NET)
我已经使用以下方法将文件(docx、xlsx)上传到我们的共享点。
现在我正在尝试将图像(png、jpg)上传到同一个库。将图像作为流上传时我没有收到任何错误。
此图像也没有可用的预览,我无法下载它。创建的共享点文件如下所示:
uploaded sharepoint image
我还尝试使用 HeaderOptions 列表并将内容类型设置为“image/png”。
我的流包含流和图像格式。我能够将我的流转换回图像并将其保存到我的文件系统。所以我认为这不取决于我的流和流内容。由于我的功能可以与 docx 文件一起正常工作,我也认为它不符合任何权限或连接主题...
这是我的上传功能:
Public Async Function createImageUploadAsync(Stream As Stream, DriveItemID As String, Rootpath As String, filename As String) As Task(Of String)
Dim FileId As String = ""
Try
'Dim Option As List(Of HeaderOption) = New List(Of HeaderOption) From {
' New HeaderOption("Content-Type", "image/png")
' }
Dim ms As MemoryStream = New MemoryStream
If _GraphClient IsNot Nothing Then
Dim uploadedfile = Await _GraphClient.Sites(__DAL.SiteID).Lists(DriveItemID).Drive.Root.ItemWithPath(Rootpath + filename).Content.Request().PutAsync(Of DriveItem)(Stream)
FileId = uploadedfile.id
End If
Catch ex As Exception
If __DAL.Testbetrieb Then Stop
__Prot.Err(ex, True)
End Try
Return FileId
End Function
为什么我上传的图片是空的,你有什么建议吗?
以防其他人遇到同样的问题...
经过数小时的研究和测试,我找到了解决问题的方法:
您可以将 PDF、Word 和 Excel 文件作为 MemoryStream 上传,正如我在上面解释的那样。但是您不能将图像作为 MemoryStream 上传。您必须将图像读取为 FileStream,然后您可以以相同的方式上传它。
我已经使用以下方法将文件(docx、xlsx)上传到我们的共享点。 现在我正在尝试将图像(png、jpg)上传到同一个库。将图像作为流上传时我没有收到任何错误。 此图像也没有可用的预览,我无法下载它。创建的共享点文件如下所示: uploaded sharepoint image
我还尝试使用 HeaderOptions 列表并将内容类型设置为“image/png”。
我的流包含流和图像格式。我能够将我的流转换回图像并将其保存到我的文件系统。所以我认为这不取决于我的流和流内容。由于我的功能可以与 docx 文件一起正常工作,我也认为它不符合任何权限或连接主题...
这是我的上传功能:
Public Async Function createImageUploadAsync(Stream As Stream, DriveItemID As String, Rootpath As String, filename As String) As Task(Of String)
Dim FileId As String = ""
Try
'Dim Option As List(Of HeaderOption) = New List(Of HeaderOption) From {
' New HeaderOption("Content-Type", "image/png")
' }
Dim ms As MemoryStream = New MemoryStream
If _GraphClient IsNot Nothing Then
Dim uploadedfile = Await _GraphClient.Sites(__DAL.SiteID).Lists(DriveItemID).Drive.Root.ItemWithPath(Rootpath + filename).Content.Request().PutAsync(Of DriveItem)(Stream)
FileId = uploadedfile.id
End If
Catch ex As Exception
If __DAL.Testbetrieb Then Stop
__Prot.Err(ex, True)
End Try
Return FileId
End Function
为什么我上传的图片是空的,你有什么建议吗?
以防其他人遇到同样的问题...
经过数小时的研究和测试,我找到了解决问题的方法:
您可以将 PDF、Word 和 Excel 文件作为 MemoryStream 上传,正如我在上面解释的那样。但是您不能将图像作为 MemoryStream 上传。您必须将图像读取为 FileStream,然后您可以以相同的方式上传它。