2

基本上,我正在建立一个允许用户上传文件的网站。从前端(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”

4

1 回答 1

2

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

using(var file = File.Create(somePath)) {
    Request.InputStream.CopyTo(file);
}
于 2013-05-03T22:20:27.613 回答