通过 .NET Core 从 Request 获取文件 Api
Get file from Request over .NET Core Api
我不知道,如何通过我的 .NET Core API 获取文件并将其另存为文件。
例如:
我使用以下方法上传我的测试文件:
private void Button_Click(object sender, RoutedEventArgs e) {
var client = new RestSharp.RestClient("https://localhost:44356/api/");
var request = new RestSharp.RestRequest("Upload", RestSharp.Method.POST);
request.AddFile(
"test",
"c:\kill\test.wav");
client.Execute(request);
}
我的 API 收到一个请求。
此方法如下所示:
[HttpPost]
public IActionResult UploadFile() {
using(var reader = new StreamReader(Request.Body)) {
var body = reader.ReadToEnd();
}
return View();
}
我的 body 变量包含这个:
-------------------------------28947758029299
Content-Disposition: form-data; name="test"; filename="test.wav"
Content-Type: application/octet-stream
RIFF^b
现在我的问题是:
如何获取文件并将其保存到我的光盘上?
我在客户端 Restsharp 版本 106.3.1 上使用 .NET Core 2.1 Webapi。
首先,您需要确定发送文件的方式,即编码类型。这决定了请求正文的解释方式。如果您想使用 multipart/form-data
,那么您的动作签名需要如下所示:
public IActionResult UploadFile(IFormFile test) { // since you made the key "test"
然后,您可以通过以下任一方式获取实际文件数据:
byte[] bytes;
using (var ms = new MemoryStream())
{
await test.CopyToAsync(ms);
bytes = ms.ToArray();
}
或者,如果您想直接使用流:
using (var stream = test.OpenReadStream())
{
...
}
我不知道,如何通过我的 .NET Core API 获取文件并将其另存为文件。
例如: 我使用以下方法上传我的测试文件:
private void Button_Click(object sender, RoutedEventArgs e) {
var client = new RestSharp.RestClient("https://localhost:44356/api/");
var request = new RestSharp.RestRequest("Upload", RestSharp.Method.POST);
request.AddFile(
"test",
"c:\kill\test.wav");
client.Execute(request);
}
我的 API 收到一个请求。 此方法如下所示:
[HttpPost]
public IActionResult UploadFile() {
using(var reader = new StreamReader(Request.Body)) {
var body = reader.ReadToEnd();
}
return View();
}
我的 body 变量包含这个:
-------------------------------28947758029299 Content-Disposition: form-data; name="test"; filename="test.wav" Content-Type: application/octet-stream RIFF^b
现在我的问题是:
如何获取文件并将其保存到我的光盘上?
我在客户端 Restsharp 版本 106.3.1 上使用 .NET Core 2.1 Webapi。
首先,您需要确定发送文件的方式,即编码类型。这决定了请求正文的解释方式。如果您想使用 multipart/form-data
,那么您的动作签名需要如下所示:
public IActionResult UploadFile(IFormFile test) { // since you made the key "test"
然后,您可以通过以下任一方式获取实际文件数据:
byte[] bytes;
using (var ms = new MemoryStream())
{
await test.CopyToAsync(ms);
bytes = ms.ToArray();
}
或者,如果您想直接使用流:
using (var stream = test.OpenReadStream())
{
...
}