如何使用 PowerShell Invoke-RestMethod 发送多部分/表单数据

2023-11-23

我正在尝试通过 Invoke-RestMethod 在与带有 -F 开关的curl 类似的上下文中发送文件。

卷曲示例

curl -F FileName=@"/path-to-file.name" "https://uri-to-post"

在powershell中,我尝试过这样的事情:

$uri = "https://uri-to-post"
$contentType = "multipart/form-data"
$body = @{
    "FileName" = Get-Content($filePath) -Raw
}

Invoke-WebRequest -Uri $uri -Method Post -ContentType $contentType -Body $body
}

如果我检查 fiddler,我会发现主体包含原始二进制数据,但我收到 200 响应,显示没有发送有效负载。

我也尝试过使用 -InFile 参数,但没有成功。

我见过许多使用 .net 类的示例,但我试图使用较新的 Powershell 3 命令来保持简单。

有没有人有任何指导或经验来完成这项工作?


接受的答案不会做multipart/form-data请求,而是一个application/x-www-form-urlencoded请求强制Content-Typeheader 为正文不包含的值。

发送的一种方法是multipart/form-dataPowerShell 的格式化请求为:

$ErrorActionPreference = 'Stop'

$fieldName = 'file'
$filePath = 'C:\Temp\test.pdf'
$url = 'http://posttestserver.com/post.php'

Try {
    Add-Type -AssemblyName 'System.Net.Http'

    $client = New-Object System.Net.Http.HttpClient
    $content = New-Object System.Net.Http.MultipartFormDataContent
    $fileStream = [System.IO.File]::OpenRead($filePath)
    $fileName = [System.IO.Path]::GetFileName($filePath)
    $fileContent = New-Object System.Net.Http.StreamContent($fileStream)
    $content.Add($fileContent, $fieldName, $fileName)

    $result = $client.PostAsync($url, $content).Result
    $result.EnsureSuccessStatusCode()
}
Catch {
    Write-Error $_
    exit 1
}
Finally {
    if ($client -ne $null) { $client.Dispose() }
    if ($content -ne $null) { $content.Dispose() }
    if ($fileStream -ne $null) { $fileStream.Dispose() }
    if ($fileContent -ne $null) { $fileContent.Dispose() }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 PowerShell Invoke-RestMethod 发送多部分/表单数据 的相关文章

随机推荐

  • Crystal 在 SetDataSource 中报告错误

    我在 VS 2010 sap crystalreports 中遇到问题 使用 C 制作 Windows 应用程序 我使用以下代码收到以下错误 CrystalReport1 cr1 new CrystalReport1 cr1 SetData
  • 如何读取带有未转义反斜杠的 JSON 文件?

    我有一个包含连接字符串的 JSON 文件 abc json host 1 2 3 4 user abc passwd s yz u42 dbname sample port 2341 这是我的 Python 脚本 它尝试读取数据 impor
  • Oracle 11g - 如何优化缓慢的并行插入选择?

    我们希望加快下面并行插入语句的运行速度 我们预计插入大约 80M 条记录 大约需要 2 小时才能完成 INSERT PARALLEL STAGING EX 16 APPEND NOLOGGING INTO STAGING EX ID TRA
  • Silverlight + MVVM + 绑定 = 内存泄漏?

    到目前为止 我的测试表明 在 silverlight 中利用 MVVM 模式的所有标准方法 示例和框架都面临着一个巨大的问题 大量内存泄漏 导致 VM 无法被垃圾收集 显然这是一个巨大而荒谬的说法 所以我的期望是有人会对我出错的原因和地方有
  • 向作为 Laravel 通知发送的电子邮件添加标头

    有人知道如何在发送的电子邮件中添加标头Laravel 通知系统 我不是在谈论Mailable我可以通过以下方式设置标题的类withSwiftMessage method 我也想继续使用MailMessage一旦我使用了很多电子邮件line
  • 删除标题标签工具提示

    有没有办法从标题属性中删除工具提示而不实际删除标题 我有一个带有这样标题属性的链接 a href url title anotherURL a 标题完好无损很重要 因为我需要从那里读取网址 我发现的所有修复方法都是删除标题属性并重用它 但在
  • Android Facebook SDK:“(# 404) Keyhash XXXXXX 与任何存储的密钥哈希不匹配”

    我正在尝试将 Android Facebook 集成到一个应用程序中 我是新来的 我已经获得了 Facebook SDK 并且正在尝试从那里运行一些示例 当我运行示例时 出现此错误 404 Keyhash XXXXXX 与任何存储的密钥哈希
  • 如何开玩笑地模拟 AWS 库

    我正在使用 aws amplify 库中的登录方法 在玩笑中运行测试用例时 我无法从该库调用signIn方法 Code import Auth from aws amplify import statement code for funct
  • 获取DatagridviewComboBoxCell的SelectedIndex

    我有一个Winforms应用程序有一个DataGridView The DataGridView未绑定到数据源 我正在读取一个文本文件 并根据文件中的每一行 将每一行的值放置到数据网格中 我的网格中有一个列是ComboBoxColumn 它
  • sails.js(使用node.js 和express.js)的标题或应用程序名称在哪里?

    我正在尝试更改我的网站名称 找不到可以设置标题或应用程序名称的位置 您可以在以下位置创建任何文件config 目录 例如config app js其中包含这样的内容 module exports appName My App 导出对象的任何
  • 设计和编码 - 从上到下还是从下到上? [关闭]

    Closed 这个问题是基于意见的 目前不接受答案 在编码时 根据您的经验 什么是更好的方法 将问题分解为足够小的部分 然后实施每个部分 将问题分解 然后使用自上而下的方法实施 任何其他 我倾向于自上而下设计并自下而上实施 对于实施而言 构
  • 尝试将消息发送到远程队列时 pika.exceptions.ProbableAuthenticationError

    我正在尝试奔跑RabbitMQ Python 教程但发送方位于 virtualbox 主机上 接收方和队列位于 virtualbox 来宾机上 所以我修改了提到的send py仅通过替换代码本地主机 with 192 168 1 5 当我运
  • 如何从菜谱目录的内容生成私有菜谱 JSON?

    我已经开发了一个 Symfony 包 并且正在尝试创建一个配方 在提交之前recipes contrib 我想测试一下 所以我跟着私人食谱说明 不是因为我想要一个私有配方 也就是说 包和配方都不是私有 GitHub 项目意义上的 私有 我已
  • ios编程-格式字符串未使用数据参数

    I get a Data argument not used by format string当我运行以下代码时出错 void pickerView UIPickerView thePickerView didSelectRow NSInt
  • MediaStore:获取图像数据、缩略图和文件夹

    我有两个清单 我们将它们称为AlbumsList 和PicturesList 第一个显示相册封面 其中一张图像 名称和其中的照片数量 第二个显示所选相册中包含的所有图像 我已经使用 File 类完成了此操作 但它运行速度太慢 并且当我只需要
  • 导航栏上方的 android Q 内容

    我们的应用程序的目标是 API 28 并在状态栏下绘制内容 为此 我们使用以下标志和样式 window addFlags FLAG LAYOUT NO LIMITS
  • jquery mobile 中的日期选择器在第二页中添加时是重复的

    我需要一些有关移动应用程序中日期选择器使用的帮助 我在我的应用程序中使用 jQuery UI 日期选择器 但是当我将日期选择器放在第二页时 它会显示两次 重复 但是 当我将日期选择器放在第一页时 显示正常 这是一个示例 如果您运行它 您可以
  • 有没有办法将命名范围组合成新的命名范围?

    I have class Foo lt ActiveRecord Base named scope a lambda a conditions gt a gt a named scope b lambda b conditions gt b
  • url 中的 django 用户名,而不是 id

    在一个迷你虚拟社区中 我有一个 profile view 功能 这样我就可以查看任何注册用户的个人资料 个人资料视图函数将个人资料所属的用户的 id 作为参数 因此当我想访问用户 2 的个人资料时 我会这样调用它 http 127 0 0
  • 如何使用 PowerShell Invoke-RestMethod 发送多部分/表单数据

    我正在尝试通过 Invoke RestMethod 在与带有 F 开关的curl 类似的上下文中发送文件 卷曲示例 curl F FileName path to file name https uri to post 在powershel