70 lines
1.8 KiB
PowerShell
70 lines
1.8 KiB
PowerShell
function DownloadFileInChunks {
|
|
param (
|
|
[string]$url,
|
|
[string]$destinationFile,
|
|
[int]$chunkSizeGB = 1
|
|
)
|
|
|
|
# 将 GB 转换为字节
|
|
$chunkSize = $chunkSizeGB * 1024 * 1024 * 1024
|
|
|
|
# 获取文件的总大小
|
|
$response = Invoke-WebRequest -Uri $url -Method Head
|
|
$totalSize = [long]$response.Headers["Content-Length"]
|
|
|
|
# 计算分段数量
|
|
$chunks = [math]::Ceiling($totalSize / $chunkSize)
|
|
|
|
# 下载每一段
|
|
for ($i = 0; $i -lt $chunks; $i++) {
|
|
$start = $i * $chunkSize
|
|
$end = [math]::Min($start + $chunkSize - 1, $totalSize - 1)
|
|
|
|
$headers = @{
|
|
"Range" = "bytes=$start-$end"
|
|
}
|
|
|
|
$chunkResponse = Invoke-WebRequest -Uri $url -Headers $headers -Method Get
|
|
$chunkData = $chunkResponse.Content
|
|
|
|
# 以追加模式写入文件
|
|
[System.IO.File]::WriteAllBytes($destinationFile, $chunkData)
|
|
}
|
|
|
|
Write-Host "dowonload ok"
|
|
}
|
|
|
|
# 指定文件路径
|
|
$filePath = "D:\CmiiDeployOffline\ZheJiangErJiPingTai\all-gzip-image-list.txt"
|
|
# 指定下载的目标目录
|
|
$destinationFolder = "D:\CmiiDeployOffline\ZheJiangErJiPingTai"
|
|
|
|
$oss_prefix_url="https://oss.demo.uavcmlc.com/cmlc-installation/6.1.1/"
|
|
|
|
# 创建目标目录(如果不存在)
|
|
#if (-not (Test-Path $destinationFolder)) {
|
|
# New-Item -ItemType Directory -Path $destinationFolder
|
|
#}
|
|
|
|
#Write-Host "[DLTU] - 开始下载镜像压缩文件"
|
|
Write-Host ""
|
|
|
|
# 读取文件并下载每一行的 URL
|
|
Get-Content $filePath | ForEach-Object {
|
|
$url = $_
|
|
Write-Host "start to download $oss_prefix_url$url"
|
|
|
|
$fileName = Join-Path $destinationFolder $url
|
|
Write-Host $fileName
|
|
DownloadFileInChunks -url $oss_prefix_url$url -destinationFile $fileName -chunkSizeGB 0.1
|
|
# Invoke-WebRequest -Uri $oss_prefix_url$url -OutFile $fileName
|
|
Write-Host ""
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|