将文件传输到wwwroot

rta7y2nd  于 2021-06-24  发布在  Kudu
关注(0)|答案(1)|浏览(466)

我使用的是来自powershell的kudu azure zip部署api。
如何确保在wwwroot中提取部署的zip文件夹的内容,而wwwroot是包含这些内容的文件夹?
电流:
(这里我的zip文件夹是wwwroot中的容器)
/站点/wwwroot/myzipfoldername/contents
预期:
(我希望zip文件夹的内容直接添加到wwwroot中,并且在zip文件夹名称之外)
/站点/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/目录中,而没有预期的文件夹名称。

fnvucqvd

fnvucqvd1#

我看了官方文件 Deploy your app to Azure App Service with a ZIP or WAR file 在子部分中运行powershell脚本 With PowerShell ,没关系,很好用。
您的问题是由zip文件的文件结构引起的。我会告诉你区别。
我的目录中有两个xml文件 D:\projects\xml 在本地。我把它们打包成一个zip文件 xml.zip 用两种不同的方法:用一个容器 xml ,没有任何容器,如下图所示 7-zip .
图1。容器 xml 在zip文件中 xml.zip
图1.1。容器 xml 包含两个xml文件

图2。zip文件中没有容器 xml.zip
然后用不同的zip文件运行同一个powershell脚本,不同的zip文件具有不同的文件结构,最后得到不同的结果 ZipDeployUI 如下图所示。
图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 说。
希望有帮助。

相关问题