写入 Amazon AWS S3 时排除文件或特定类型
Exclude files or certain type when writing to Amazon AWS S3
我正在尝试将文件夹上传到 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) Write-S3Object
的 -SearchPattern
参数中是否可以指定要排除的文件?
谢谢。
您可以将 content-type
添加到您上传到 S3 的文件中。请参阅:S3 PUT API - 但这意味着您将使用 AWS 提供的 S3 SDK 以及一些编码经验。
为避免编码,请在手动上传任何文件时使用可以配置特定 mime 类型的 S3 Browser。 S3 浏览器已经支持 SVG,因此您无需执行任何操作,只需使用此工具上传即可。
首先,我无法在上传文件夹时使用 -ContentType "image/svg+xml"
,因为它不会将内容类型应用于文件。
所以我采取了两步走的方法;首先上传所有文件,包括内容类型不正确的 SVG。这是为了创建文件夹,以防文件夹中只有 SVG 文件。
Write-S3Object -BucketName react-ui -Folder $i.FullName -Recurse -KeyPrefix $i.Name -CannedACLName NoACL
之后,我重新上传了正确内容类型为 /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"
}
我正在尝试将文件夹上传到 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) Write-S3Object
的 -SearchPattern
参数中是否可以指定要排除的文件?
谢谢。
您可以将 content-type
添加到您上传到 S3 的文件中。请参阅:S3 PUT API - 但这意味着您将使用 AWS 提供的 S3 SDK 以及一些编码经验。
为避免编码,请在手动上传任何文件时使用可以配置特定 mime 类型的 S3 Browser。 S3 浏览器已经支持 SVG,因此您无需执行任何操作,只需使用此工具上传即可。
首先,我无法在上传文件夹时使用 -ContentType "image/svg+xml"
,因为它不会将内容类型应用于文件。
所以我采取了两步走的方法;首先上传所有文件,包括内容类型不正确的 SVG。这是为了创建文件夹,以防文件夹中只有 SVG 文件。
Write-S3Object -BucketName react-ui -Folder $i.FullName -Recurse -KeyPrefix $i.Name -CannedACLName NoACL
之后,我重新上传了正确内容类型为 /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"
}