You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何上传zip包到JFrog Artifactory时自动解压到指定路径

问题场景

本地存在路径为/tmp/some-js/的目录(内含大量子文件夹),已打包为zip压缩包/tmp/some-js.zip,Artifactory目标存储路径为/npm-dev/some-js/*,原上传命令如下:

curl -u user:api-key -k -X PUT https://xxx.xx.xx.xx:8081/artifactory/npm_dev/some-js/ -T /tmp/some-js.zip

执行上传后Artifactory内实际生成路径为/npm-dev/some-js/some-js.zip/*,需要实现将some-js.zip的内容直接解压到目标路径/npm-dev/some-js下。

实现方案

通过Artifactory原生的归档自动解压能力即可实现,无需手动解压后逐文件上传,两种方式按需选择:

  • 仓库全局配置(一次配置长期生效)
    1. 使用管理员账号登录Artifactory后台,进入仓库管理列表,找到目标npm_dev仓库打开编辑页面
    2. 切换到高级配置标签页,勾选部署归档文件时自动提取选项,保存配置生效
    3. 直接执行原有curl上传命令即可,zip包上传完成后会被后台自动解压,包内所有内容会直接释放到指定的/npm-dev/some-js/路径下,不会生成嵌套的zip同名目录。

    说明:该能力默认支持zip、tar、tar.gz等主流压缩格式,大体积压缩包上传后解压会有几秒到几十秒的延迟,待后台任务执行完成后即可看到完整目录结构。

  • 单次请求触发(无需修改仓库全局配置)
    如果没有仓库管理员权限,或者仅需要单次上传时触发解压,可以在原curl命令中增加专用请求头,临时触发自动解压逻辑,修改后的命令如下:
    curl -u user:api-key -k -H "X-Explode-Archive: true" -X PUT https://xxx.xx.xx.xx:8081/artifactory/npm_dev/some-js/ -T /tmp/some-js.zip
    
    增加该请求头后,本次上传的zip包会被自动解压到目标路径,不会在仓库中保留zip包本身的文件节点。
避坑提示
  • 上传时不要在PUT请求的目标路径后拼接zip文件名,即不要将地址写为https://xxx.xx.xx.xx:8081/artifactory/npm_dev/some-js/some-js.zip,否则解压后的文件会落在/npm-dev/some-js/some-js.zip/路径下,就是之前出现的路径嵌套问题。
  • 如果打包时将外层some-js目录整体打入压缩包,解压后会出现/npm-dev/some-js/some-js/*的双层目录结构,打包时直接进入/tmp/some-js/目录选中所有内部文件打包即可避免该问题。

内容的提问来源于stack exchange,提问作者mamol

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 13:06:23