powershell - 写入Amazon AWS S3时排除文件或某些类型

标签 powershell amazon-web-services svg amazon-s3 aws-powershell

我正在尝试将文件夹上传到S3以用作静态网站。我的问题是文件夹中有某些扩展名的文件,例如.css,.png,.svg等。我使用的是AWS PowerShell工具,当我上传以下命令时,.svg文件是通过以下方式上传的内容类型错误。

Write-S3Object -BucketName bucket-name -Folder folderName -Recurse -Force -KeyPrefix folderName -CannedACLName NoACL

作为一种解决方法,我想到的是迭代文件夹,而不上传.svg文件。重新迭代文件夹,仅上传.svg设置正确的-content-type
Write-S3Object -BucketName bucket-name -Folder folderName -Recurse -Force -KeyPrefix folderName -CannedACLName NoACL -SearchPattern "*.svg" -ContentType "image/svg+xml"

所以我在这里有两个问题。

1)我可以一次性上传所有文件,而不是采用两步方法,而是为svg文件设置正确的内容类型?

2)是否有指定要在-SearchPatternWrite-S3Object参数中排除的文件?

谢谢。

最佳答案

第一件事是我在上传文件夹时不能使用-ContentType "image/svg+xml",因为它没有将content-type应用于文件。

因此,我采取了两步法;首先上传所有文件,包括具有错误Content-Type的SVG。这是为了在文件夹仅包含SVG文件的情况下创建文件夹。

Write-S3Object -BucketName react-ui -Folder $i.FullName -Recurse -KeyPrefix $i.Name -CannedACLName NoACL

之后,我用正确的Content-Type / svg + xml重新上传SVG文件。此处的-Key参数非常重要,因为您可以使用此参数定义目标文件夹的路径。
foreach ($i in Get-ChildItem $path -Recurse -Include "*.svg") 
{
  $filename = [System.IO.Path]::GetFileName($i)
  $awsPath = $i.DirectoryName.Substring($i.DirectoryName.IndexOf($path) + $path.Length)
  $fileWithPath = $awsPath + "\"+ $filename
  Write-S3Object -BucketName react-ui -File $i -Key $fileWithPath -CannedACLName NoACL -ContentType "image/svg+xml"
}

关于powershell - 写入Amazon AWS S3时排除文件或某些类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36497120/

相关文章:

用于提取 Cab 文件内容并将文件移动到新位置的 Powershell 脚本

mysql - "Can' t 连接到 MySQL 服务器”,仅当客户端是远程服务器时

html - 动画 SVG Logo

css - img src SVG 使用 CSS 改变样式

html - 嵌套 SVG 的对齐方式

powershell内置函数未被识别为cmdlet的名称

excel - Powershell - 为文字或图像解析 PDF 文件

c# - 在 C# 中运行 PowerShell cmdlet

amazon-web-services - AWS IOT - 凭证的范围应限于正确的服务

amazon-web-services - 托管在 AWS EC2 实例中的 Power BI 本地数据网关