Moj*_*ack 1 .net c# rest restsharp asp.net-core
我不知道如何通过 .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);
}
Run Code Online (Sandbox Code Playgroud)
我的 API 收到一个请求。这个方法看起来像这样:
[HttpPost]
public IActionResult UploadFile() {
using(var reader = new StreamReader(Request.Body)) {
var body = reader.ReadToEnd();
}
return View();
}
Run Code Online (Sandbox Code Playgroud)
我的 body 变量包含以下内容:
-------------------------------28947758029299 内容处置:表单数据;名称=“测试”;filename="test.wav" 内容类型: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"
Run Code Online (Sandbox Code Playgroud)
然后,您可以通过以下任一方式获取实际的文件数据:
byte[] bytes;
using (var ms = new MemoryStream())
{
await test.CopyToAsync(ms);
bytes = ms.ToArray();
}
Run Code Online (Sandbox Code Playgroud)
或者,如果您想直接使用流:
using (var stream = test.OpenReadStream())
{
...
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8083 次 |
| 最近记录: |