我有以下代码将文件发布到ASP.net页面:
using (var Client = new WebClient())
Client.UploadFile("http://localhost:1625/Upload.aspx", @"TestFile.csv");
在服务器页面上,我阅读了请求的内容:
var Contents = new byte[Request.InputStream.Length];
Request.InputStream.Read(Contents, 0, (int)Request.InputStream.Length);
这是我在内容中得到的:
-----------------------8cf2bdc76fe2b40
Content-Disposition: form-data; name="file"; filename="TestFile.csv"
Content-Type: application/octet-stream
1;Test 1
2;Test 2
3;Test 3
4;Test 4
5;Test 5
-----------------------8cf2bdc76fe2b40--
实际文件内容仅为1;Test 1 ... 5;Test 5
。
我的问题是如何只获取文件内容而不是标题的整个请求?
答案 0 :(得分:1)
试试这个,首先获取发布的文件:
{
HttpFileCollection files = Request.Files;
HttpPostedFile file = files[0];
int filelength = file.ContentLength;
byte[] input = new byte[filelength ];
file.InputStream.Read(input, 0, filelength );
}
答案 1 :(得分:0)
尝试使用HttpRequest课程。它有一个属性Files,表示保存客户端上传的文件。 我没有测试过这个...
答案 2 :(得分:0)
您可以使用NameValueCollection在ASP.Net中获取请求内容:
NameValueCollection nvc = Request.Form;
string firstname, lastname;
if (!string.IsNullOrEmpty(nvc["txtFirstName"]))
{
firstname = nvc["txtFirstName"];
}
if (!string.IsNullOrEmpty(nvc["txtLastName"]))
{
lastname = nvc["txtLastName"];
}
此处txtFirstName
和txtLastName
都是上一页控件的名称。
答案 3 :(得分:0)
尝试
var Content = Client.UploadFile("http://localhost:1625/Upload.aspx", @"TestFile.csv");
string fileContents = Encoding.ASCII.GetString(Contents));