【问题标题】:How to read file in C# from POST data from web如何从 Web 的 POST 数据中读取 C# 中的文件
【发布时间】:2013-04-28 09:58:56
【问题描述】:

基本上,我正在构建一个允许用户上传文件的网站。 从前端(JavaScript),用户将浏览一个文件,我可以让网站发送 POST 数据(参数“UploadInput”和它的值,它的值是文件) 在后端(C#)中,我想复制文件并将其保存在特定路径中。 以下是我的做法。

var files = Request.Files;

file[0].SaveAs("\temp\\" + file[0].FileName);

我遇到的问题是我收到错误消息说索引超出范围。我尝试了 Response.Write(files.Count) 它给了我 0 而不是 1。 我想知道我在哪里做错了以及如何解决它,或者是否有更好的方法。 谢谢!

编辑:

我正在使用 HttpFox 进行调试。从 HttpFox 可以看到,在 POST 数据下,参数为“UploadInput”,值为“test.txt”

编辑 2: 所以我尝试了 Marc 提供的方式,但我遇到了不同的问题。 我可以创建一个新文件,但是内容不会被复制。我尝试在记事本中打开新创建的文件,它说的是“UploadInput = test.txt”

【问题讨论】:

  • 如何将数据发布到服务器?您是否在表单中指定了enctype="multipart/form-data"
  • @Guffa 不,我很确定你的意思是什么:/
  • 表单必须具有该属性,浏览器才能以服务器可以使用的格式发送上传的文件。如果没有,则该文件无法包含在表单数据中。

标签: c# post parameters upload


【解决方案1】:

如果他们只是将文件作为正文内容发布,那么此处涉及的“文件”将为零,因此file[0] 将失败。相反,您需要查看输入流,然后简单地从该流中读取。例如:

using(var file = File.Create(somePath)) {
    Request.InputStream.CopyTo(file);
}

【讨论】:

  • somePath 是什么?是网站的网址吗?该网站的工作方式是用户浏览文件并点击上传,通过使用 HttpFox 我可以在 POST 数据下看到参数是“UploadInupt”,值是“test.txt”
  • @sora0419 somePath 这是网络服务器上的本地路径;但是,我认为您需要更清楚地了解发布的数据是什么。这是多部分吗?还是生肉?还是...?
猜你喜欢
  • 2016-04-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-09
  • 2016-04-02
  • 2013-09-20
  • 1970-01-01
相关资源
最近更新 更多