我正在使用来自 powershell 的 Kudu Azure Zip Deploy API。
如何确保在 wwwroot 中提取部署的 zip 文件夹的内容,其中 wwwroot 是包含文件夹?
当前的:
(这里我的 zip 文件夹是 wwwroot 中的容器)
/site/wwwroot/MYZIPFOLDERNAME/CONTENTS
预期的:
(我希望将 zip 文件夹的内容直接添加到 wwwroot 和 zip 文件夹名称之外)
/site/wwwroot/CONTENTS
我遵循了如下所示的文档,并有一个如下所示的 powershell 脚本:
https://docs.microsoft.com/en-us/azure/app-service/deploy-zip
#PowerShell
$username = "<deployment_user>"
$password = "<deployment_password>"
$filePath = "<zip_file_path>"
$apiUrl = "https://<app_name>.scm.azurewebsites.net/api/zipdeploy"
$base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f $username, $password)))
$userAgent = "powershell/1.0"
Invoke-RestMethod -Uri $apiUrl -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)} -UserAgent $userAgent -Method POST -InFile $filePath -ContentType "multipart/form-data"
脚本完成后,压缩文件上传到我的站点,但内容打包在文件夹中并嵌套在 wwwroot 目录下。
如果我使用 ZipDeployUI 并拖动文件夹,它会按预期解压缩到 wwwroot/ 目录,而没有文件夹名称。
我按照官方文档Deploy your app to Azure App Service with a ZIP or WAR file
运行小节中的PowerShell脚本With PowerShell
,没问题,工作正常。
您的问题是由 zip 文件的文件结构引起的。我会告诉你区别。
我的D:\projects\xml
本地目录中有两个 xml 文件。我xml.zip
使用两种不同的方式将它们打包成一个 zip 文件:带容器xml
,不带任何容器,如下图通过7-zip
.
图 1. xml
zip 文件中的一个容器xml.zip
图 1.1。容器xml
包含两个 xml 文件
图 2. zip 文件中没有容器 xml.zip
然后我使用具有不同文件结构的不同 zip 文件运行相同的 PowerShell 脚本,我在ZipDeployUI
我的 WebApp 中得到了不同的结果,如下图所示。
图 3. 使用带有容器的 zip 文件运行 PowerShell 脚本xml
,将xml
容器解压到wwwroot
图 3.1。xml
路径下容器内的两个xml文件wwwroot/xml
图4. 使用没有容器的zip文件运行PowerShell脚本,直接解压两个xml文件 wwwroot
所以请把这些文件直接打包成 zip 文件,而不是打包它们的父目录,如果你使用一些工具,比如7-zip
. 或者在 PowerShell 命令行中,请先cd
移动到包含您要打包的这些文件的目录,然后运行Compress-Archive -Path * -DestinationPath <file-name>.zip
以获取 zip 文件,Create a project Zip file
如上所述。
希望能帮助到你。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句