能否通过Artifactory REST API上传含文件及子目录的目录?
Artifactory 目录上传的 REST API 实现说明
Artifactory REST API 确实没有提供直接上传整个目录(包含子目录和文件)的单一接口,你并没有遗漏文档内容。
GUI 和 JFrog CLI 之所以能完成目录上传,本质是它们在底层做了封装:自动遍历本地目录中的所有文件,对每个文件单独调用单个文件上传的 REST API,同时根据文件的相对路径在 Artifactory 中自动创建对应的子目录结构。
如果你想通过 REST API 自己实现目录上传,可以参考以下思路:
- 遍历本地目标目录下的所有文件,记录每个文件相对于根目录的路径
- 对每个文件,调用 Artifactory 的单个文件上传接口
PUT /api/storage/{repoKey}/{targetFullPath},其中targetFullPath要设置为该文件在 Artifactory 仓库中对应的完整路径(和本地相对路径一致),请求体为文件内容
举个简单的 bash 脚本示例(用 curl 实现):
# 本地待上传目录 LOCAL_DIR="./my-local-dir" # Artifactory 仓库名 REPO_KEY="my-repo" # Artifactory 地址和认证信息 ARTIFACTORY_URL="https://your-artifactory-instance/artifactory" AUTH="username:password" # 遍历目录下所有文件,逐个上传 find "$LOCAL_DIR" -type f | while read -r FILE; do # 计算文件相对于本地目录的路径 RELATIVE_PATH=$(realpath --relative-to="$LOCAL_DIR" "$FILE") # 拼接 Artifactory 中的目标路径 TARGET_PATH="$REPO_KEY/$RELATIVE_PATH" # 执行上传请求 curl -u "$AUTH" -X PUT "$ARTIFACTORY_URL/$TARGET_PATH" -T "$FILE" done
内容的提问来源于stack exchange,提问作者Jane
相关产品推荐
相关产品推荐

