无法使用 SharePoint 文件下载 REST 下载 docx 文件 API & Java
Can not download docx file using SharePoint file download REST API & Java
我从 SharePoint 服务器获得了附加的 img 值作为响应,但无法将其写入 docx 文件。使用 Postman 下载的文件 API 给出了相同的响应,如果我将 Postman 响应保存到 docx 文件,那么它可以完美保存,但不是来自 Java 端。如果我使用 Java 将相同的响应写入 docx 文件,该文件已损坏。
我正在使用此 REST API 从 Sharepoint 下载文件:
SiteURL/_api/web/getfilebyserverrelativeurl('relativeURL/Shared Documents/test.docx')/$value
很可能服务器以二进制形式返回文档 (docx) (application/octet-stream
)。您的代码保存文档的字符串表示形式:
ResponseEntity<String> response = restTemplate.exchange(fileUrl, HttpMethod.GET, request, String.class);
String responseStrFromSharePoint = response.getBody();
这就是应用程序无法解码文件的原因。而是保存服务器返回的确切二进制(字节),如以下代码片段所示:
ResponseEntity<byte[]> response = restTemplate.exchange(fileUrl, HttpMethod.GET, request, byte[].class);
byte[] responseStrFromSharePoint = response.getBody();
代码的其他部分似乎没问题。
我从 SharePoint 服务器获得了附加的 img 值作为响应,但无法将其写入 docx 文件。使用 Postman 下载的文件 API 给出了相同的响应,如果我将 Postman 响应保存到 docx 文件,那么它可以完美保存,但不是来自 Java 端。如果我使用 Java 将相同的响应写入 docx 文件,该文件已损坏。
我正在使用此 REST API 从 Sharepoint 下载文件:
SiteURL/_api/web/getfilebyserverrelativeurl('relativeURL/Shared Documents/test.docx')/$value
很可能服务器以二进制形式返回文档 (docx) (application/octet-stream
)。您的代码保存文档的字符串表示形式:
ResponseEntity<String> response = restTemplate.exchange(fileUrl, HttpMethod.GET, request, String.class);
String responseStrFromSharePoint = response.getBody();
这就是应用程序无法解码文件的原因。而是保存服务器返回的确切二进制(字节),如以下代码片段所示:
ResponseEntity<byte[]> response = restTemplate.exchange(fileUrl, HttpMethod.GET, request, byte[].class);
byte[] responseStrFromSharePoint = response.getBody();
代码的其他部分似乎没问题。