在 C# 中使用 POST/httpwebrequest 上传 zip 文件

2023-12-04

我正在尝试代码http://www.paraesthesia.com/archive/2009/12/16/posting-multipartform-data-using-.net-webrequest.aspx通过 httpwebrequest 执行 POST。

如果我在文本文件中尝试相同的代码,那就没问题了。但是,如果我使用 zip 文件执行此操作,那么当重新下载该文件时,它会说它不是有效的 zip。我认为 zip 部分可能会作为文本而不是二进制上传。然而,该页面确实说“可以在此处包含二进制内容。不要对其进行 Base-64 编码或任何其他内容,只需将其流式传输即可。”但这似乎不适用于给定的代码。我假设我必须更改将文件读取到流的部分:

  using (FileStream fileStream = new FileStream(file.FullName, FileMode.Open, FileAccess.Read))
  {
    byte[] buffer = new byte[1024];
    int bytesRead = 0;
    while ((bytesRead = fileStream.Read(buffer, 0, buffer.Length)) != 0)
    {
      stream.Write(buffer, 0, bytesRead);
    }
    fileStream.Close();
  }

也许使用 BinaryReader ?不过,我对如何在这种情况下使用它有点困惑,或者这是否是我需要做的。朝着正确的方向推动将是非常棒的。谢谢!


BinaryReader 应该确实可以工作:

FileInfo fInfo = new FileInfo(file.FullName);
// 
long numBytes = fInfo.Length;

FileStream fStream = new FileStream(file.FullName, FileMode.Open, FileAccess.Read);

BinaryReader br = new BinaryReader(fStream);

byte[] bdata = br.ReadBytes((int)numBytes);

br.Close();

fStream.Close();

// Write bdata to the HttpStream
HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create("url-here");
// Additional webRequest parameters settings.
HttpStream stream = (Stream)webRequest.GetRequestStream();
stream .Write(bdata, 0, bdata.Length);
stream.Close();

HttpWebResponse response = (HttpWebRewponse)webRequest.GetResponse();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 C# 中使用 POST/httpwebrequest 上传 zip 文件 的相关文章

  • Postsharp 不登录跟踪级别

    我喜欢在跟踪级别记录一些 Postsharp 消息 不幸的是 日志到这个级别没有打印任何输出 所有其他级别都在工作 与控制台或 NLog 后端或从其他类登录时的行为相同 如何启用跟踪级别 应用程序 xaml cs Log Attribute
  • 是否保证 sizeof(T[N]) == N * sizeof(T) ?

    我一直假设 N 个元素类型的数组的大小T 由返回sizeof保证正好是N次sizeof T The 对这个问题的评论 https stackoverflow com questions 46457449 is it always the c
  • C - 计算文件中的单词、字符和行数。字符数

    我必须用 C 编写一段代码 输出给定文件中的字符数 行数和单词数 任务看起来很简单 但我现在真的不确定出了什么问题 所以 这是代码 include
  • 线程独占数据:如何存储和访问?

    NET 中是否有可能将对象实例绑定到线程的当前执行上下文 这样在代码的任何部分我都可以做类似的事情CurrentThread MyObjectData DoOperation 并确保我访问特定于线程的数据 谢谢 你可以看一下线程静态属性 h
  • 为什么使用数组索引循环数组比指针访问慢?

    我正在读Kochan的书 Programming in C 在第 14 页的 指针和数组 部分中 264 他说 一般来说 索引数组的过程比执行索引过程花费更多的时间 访问指针内容的过程 其实这也是主要原因之一 为什么使用指针来访问数组的元素
  • 提取单花括号内的值

    我想要一个收藏 value 一个字符串使用正则表达式 例如 lorem ipsum field1 lorem ipsum field2 lorem ipsum field1 lorem ipsum field2 field3 我会得到 fi
  • C 链表销毁函数

    我正在尝试学习 C 和很多人一样 我对指针有点困惑 无论如何 我创建了一个递归函数来销毁我的链表 但是正如我调试的那样 当我从函数返回时 列表的头部不应该为空 所以我猜这是对指针的一些基本误解 这是函数 void destroy struc
  • UI 线程正在阻塞调用 COM 对象的后台线程

    我正在开发一个通过第三方 COM 库与外部设备通信的应用程序 我试图让与设备的所有通信都通过后台线程 以防止通信问题搞砸我的应用程序 并消除在 UI 线程中进行通信所引入的一些其他复杂性 问题是 每当发生导致主 UI 线程阻塞的情况 即调用
  • 为什么我收到编译错误“使用已删除的函数 'std::unique_ptr ...”

    我收到一条巨大的编译错误消息 c mingw include c 6 1 0 bits predefined ops h 123 18 error use of deleted function std unique ptr lt Tp D
  • 将 std::pair const 转换为 std::pair const 安全吗?

    理论上或实践上 安全吗reinterpret cast a std pair
  • Cookie 在 ASP.net 中失去价值

    我有以下设置 cookie 的代码 string locale DropDownList this LoginUser FindControl locale SelectedValue HttpCookie cookie new HttpC
  • 使用左连接获得不适当的输出

    我正在尝试获取变体列表 并且对于每个变体都获取所有subvariants list无论子变体属于何处 特别的Test say 100 这是示例数据 Id TestId SourceSubVariantId TargetSubVariantI
  • 如何将 Boost Spirit 自动规则与 AST 结合使用?

    编辑 当我想在另一个规则上使用它时 我扩展了 sehe 的示例以显示问题 http liveworkspace org code 22lxL7 http liveworkspace org code 22lxL7 17 我正在尝试提高 Bo
  • 快速将文本附加到文本框

    我有一个BackgroundWorker正在发布消息的线程 使用BeginInvoke在 GUI 中的文本框中 方法 write debug text 在文本框中显示文本使用AppendText并将文本写入Console 外观上是这样的Ba
  • 如何解决 boost::multi precision::cpp_dec_float 除法错误

    除以boost multiprecision cpp dec float有某种舍入误差 如下 include
  • C++ 在预处理器 #if 中对 sizeof() 比较抛出编译错误

    我有这个 它不会从 Visual Studio 编译错误 致命错误 C1017 无效的整数常量表达式 我该怎么做 template
  • Membership.ValidateUser() 的目的是什么

    我一直在学习有关MembershipProvider类 我认为Membership ValidateUser 方法应该用于登录用户 然而我刚刚了解到有一个FormsAuthentication Authenticate 目的是什么Valid
  • 如何使用 .NET 捕获我的桌面视频?

    我想知道是否有任何方法可以使用 NET 捕获我的桌面的视频 截屏视频 我并不是在寻找截屏软件 而只是在寻找一种可以让我自己生成桌面视频的技术 我想过拍摄多个屏幕截图 但我不确定如何以编程方式生成带有图像序列的视频 有人有主意吗 Thanks
  • 如何使用实体框架设置连接字符串

    我将 EF6 与 MySQL 结合使用 并有一个用于多个数据库的模型 我希望能够在我的表单中设置连接设置 如何以编程方式设置模型的连接字符串 你应该使用EntityConnectionFactory这就是您所需要的 public strin
  • 为什么 INT64_MIN 的定义不同?为什么他们的行为不同?

    The stdint h我公司的标题是 define INT64 MIN 9223372036854775808LL 但在我项目的一些代码中 一位程序员写道 undef INT64 MIN define INT64 MIN 92233720

随机推荐

  • 使用来自 URL 列的 importXML 和 arrayformula 在 google 工作表中返回相同的重复结果

    我已成功使用 ImportXML 获取 Youtube 视频的标题以及 Google Sheets 中的 URL 这是我的代码 IF ISBLANK A3 A IMPORTXML A3 A id eow title 但是 当我尝试在 Imp
  • 机架 ssl 不适用于 Thin

    我按照以下说明为 Rails 3 07 安装了rack ssl http www simonecarletti com blog 2011 05 configuring rails 3 https ssl 它不起作用 发出第一个 https
  • 快速比较两个结构的值

    我有两个结构体和两个与之对应的数组 我试图比较这两个数组值并将其打印在一个过滤数组中我确实尝试过使用过滤器 但它给了我一个错误我想比较结构体和获取一个数组 结构一 struct One let ID String let name Stri
  • 由于警告和 ValueError,无法在 Windows 的 virtualenv 中 pip 安装 PIL

    我正在尝试安装PIL在 virtualenv 中但失败了 我创建了一个全新的 virtualenv 并做了pip install PIL并得到以下结果 C Users s3z Desktop My Dropbox pythons ham g
  • 计算 iOS 中的电池寿命

    想知道除了苹果技术统计数据之外是否还有其他参考资料来计算电池寿命 我尝试比较一些现有的电池应用程序 剩余电池百分比 苹果的数据 但有时我没有得出相同的答案 另外还有使用 2G 电池 而不是 3G 的统计数据 我在 Apple 上没有看到任何
  • 如何为另一个使用 stdin 输入的函数编写测试函数?

    作为大学作业的一部分 我有以下职能 int readMenuOption local declarations char option 2 read in 1 char from stdin plus 1 char for string t
  • 播放音频并继续播放

    我正在用 C 在 unity 5 中制作一个小游戏 到目前为止 我已经成功设计了关卡并完成了一些基本的脚本编写 目前 我有一个触发器 可以生成一个对象 并希望它在用户输入后播放并播放音频源 然而 因为我希望它是一个跳跃恐慌 所以触发器非常小
  • Boost Python 1.48 在导出 32 位枚举时失败

    较新版本的 Boost Python 是否支持从 C 导出完整的 32 位枚举 我使用的是 1 48 并且能够导出最多 30 位 但当我尝试导出 32 位数字时 由于 访问冲突读取位置 0x00000001 每次都会失败 深入研究 enum
  • ValueError:值的长度与索引的长度不匹配 |熊猫 DataFrame.unique()

    我正在尝试获取新的数据集 或将当前数据集列的值更改为其唯一值 这是我想要得到的示例 A B 0 1 1 1 2 5 2 1 5 3 7 9 4 7 9 5 8 9 Wanted Result Not Wanted Result A B A
  • 为什么有些 php 文件不以右括号“?>”结尾? [复制]

    这个问题在这里已经有答案了 我一直在使用 Wordpress 和其他 CMS 我注意到一些 php 文件没有结束语 gt 当我编写自己的文件时 我必须包含 gt 否则软件崩溃 我想知道他们是如何让它工作的 或者主题的特定部分是否接受这种类型
  • 如何知道文件复制完成

    我正在使用 ReadDirectoryChangesW 来监视一个文件夹 如果我将一个大文件复制到该文件夹 我可以收到多个 FILE ACTION MODIFIED 消息 似乎每次 Windows 写入一大块文件时 您都会收到每个文件修改的
  • Microsoft.Identity.Web 和 ASP.NET Core SignalR JWT 身份验证

    我正在使用 ASP NET Core 制作一个 Web 应用程序 该应用程序还使用 SignalR Core 来提供实时功能 我使用 Azure AD B2C 进行用户管理 我已经成功使用了Microsoft Identity Web ht
  • Spring中初始化多个数据库

    我正在使用 AbstractRoutingDatasource 在运行时在数据库之间进行路由 在 informix 数据库的实际情况下 一切工作正常 为了进行测试 我创建了一个 spring 配置文件以在内存 H2 数据库中使用 使用测试配
  • 如何在运行一次后“禁用”javascript函数

    所以我有两个 html 按钮 每个按钮运行不同的功能 两个功能都在下面 基本上 您单击两个按钮之一即可将 Google 地图操作侦听器添加到地图 我已经成功地让它发挥作用了 唯一的问题是我只希望动作监听器一键可用 单击一次之后 我希望用户必
  • if/else 构造内部和外部函数

    当我查看 R 函数时 我经常发现以下结构 f lt function exp T if exp a lt 1 else a lt 2 f f F 这将运行而不会出现错误 但是执行内部函数代码会引发错误 因为 R 可能假设该语句在第一次赋值后
  • iPhone - 保存 UIImageView 状态

    我创建了 UIImageView 的子类 并且正在子类本身内部处理其对象的触摸 现在 当用户即将退出应用程序时 我想保存图像的状态 由于图像上可能发生了多次转换 我将所有转换保存在一个数组中 我希望能够将这些对象保存在 applicatio
  • 导致 TFS InvokeProcess 构建活动在其他凭据下运行

    我们使用 InvokeProcess 操作自定义了构建过程 该操作运行部署 sln 的 powershell 脚本 问题是该脚本必须在给定用户 而不是 tfsbuild 用户 下运行 我们怎样才能做到这一点 替代方案 1 创建 Invoke
  • [].append(x) 行为

    这按照我的预期执行 gt gt gt x gt gt gt x append 3 gt gt gt x 3 为什么以下返回 None gt gt gt x append 3 gt gt gt x gt gt gt because list
  • openCV 中的结果比较Hist

    我正在尝试比较我存储为数组的两个直方图 我是 C 接口 cv Mat 和 OpenCV 中计算直方图的新手 My code int testArr1 4 12 10 11 11 int testArr2 4 12 0 11 0 cv Mat
  • 在 C# 中使用 POST/httpwebrequest 上传 zip 文件

    我正在尝试代码http www paraesthesia com archive 2009 12 16 posting multipartform data using net webrequest aspx通过 httpwebreques