来自 docker 容器的 pdf 文件的 cURLing Sharepoint 无法完全工作

问题描述 投票:0回答:1

我在 Windows 11 上有一个 docker 桌面。

当我从我的笔记本电脑(主机)上 cURL(或 wget)sharepoint 获取 pdf 文件时,一切都运行良好(在 99% 的情况下,不是 100%,因为我在一百次测试中只观察到一次数据丢失), pdf 文件已正确下载到我的笔记本电脑上:

curl --location "https://xxx.sharepoint.com/sites/xxx/_api/web/GetFolderByServerRelativeUrl('/sites/xxx/Shared%20Documents/xxx')/Files('file.pdf')/$value" --header "Authorization: Bearer xxx" --output file.pdf

当我在 docker 容器 (Debian) 中运行相同的 cURL 时,Sharepoint 会响应,但容器中收到的 pdf 文件已损坏,只有 3.5KB,而不是 3.9KB(仅作为示例)。然而,有时容器接收到的数据超出了预期,例如当文件大小为 3.9KB 而容器接收到 5.4KB 时,这种情况经常发生,这真的很令人困惑。

另外,正如我所说,cURL 命令在具有 Windows shell 的主机上运行良好。然而,使用 MobaXterm,我注意到与 docker 容器相同的问题,下载的文件由于编码、文件系统或我忽略的东西而损坏!

我的 Docker 镜像:

FROM gradle:8.5-jdk21 AS build
WORKDIR /usr/local/app/myApp
COPY build.gradle.kts settings.gradle.kts ./
COPY . ./
RUN gradle wrapper --gradle-version 8.5
RUN ./gradlew bootJar
FROM openjdk:21-jdk-slim
LABEL maintainer="[email protected]"
EXPOSE 8081
COPY --from=build /usr/local/app/myApp/build/libs/*.jar myApp.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/myApp.jar"]

我尝试使用 MTU(在我的 docker-compose 以及我的 vEthernet(WSL(Hyper-V 防火墙))网络接口中),但效果不佳,而且我的连接也不是那么糟糕(大约 100Mbps 上下,40ms大约延迟)。

现在我将尝试使用 Wireshark 查看 TCP 数据包,但我不确定这是否有帮助。

感谢您的帮助。

docker sharepoint download
1个回答
0
投票

已解决: 当从 MobaXterm 或 Linux 容器中 cURLing Sharepoint 时,我们只需用反斜杠转义“$”即可。 因此,以下

curl --location "https://xxx.sharepoint.com/sites/xxx/_api/web/GetFolderByServerRelativeUrl('/sites/xxx/Shared%20Documents/xxx')/Files('file.pdf')/\$value" --header "Authorization: Bearer xxx" --output file.pdf
工作正常。 关于我在 Windows 中 cURL 时注意到的 1% 失败案例,这可能是由于令牌过期而不是与我的网络或互联网速度相关的问题。 感谢您尝试提供帮助。

© www.soinside.com 2019 - 2024. All rights reserved.