如何在c#webapi中接收前端发送的文件名,并读取文件中的二进制数据到字节数组中
时间: 2024-09-10 15:18:32 浏览: 89
在C# Web API中,接收前端发送的文件名并通过文件流读取其二进制数据到字节数组,你需要使用`FormData`对象以及`MultipartFormDataParser`来进行操作。以下是一个简单的示例:
首先,在前端发送文件时,你可以使用`FormData`对象:
```javascript
function uploadFile(file, fileName) {
var formData = new FormData();
formData.append("file", file, fileName);
$.ajax({
type: "POST",
url: "/api/upload",
data: formData,
cache: false,
contentType: false,
processData: false,
xhr: function () { // 创建自定义xhr对象
var xhr = new XMLHttpRequest();
xhr.upload.onprogress = function (e) {
if (e.lengthComputable) {
console.log(Math.round((e.loaded / e.total) * 100) + '% completed.');
}
};
return xhr;
},
success: function (response) {
console.log(response);
},
error: function (error) {
console.error(error);
}
});
}
```
在后端,你需要创建一个接受`multipart/form-data`请求的API:
```csharp
using Microsoft.AspNetCore.Http;
// ...
[HttpPost]
public async Task<IActionResult> Upload(IFormFile file)
{
if (file == null || file.Length == 0)
{
return BadRequest("No file selected.");
}
using (var streamReader = new StreamReader(file.OpenReadStream()))
{
var fileName = file.FileName;
var bytes = new byte[file.Length];
await streamReader.ReadAsync(bytes, 0, (int)file.Length);
// 这里可以进一步处理字节数据
// ...
}
return Ok($"File '{fileName}' has been received successfully.");
}
阅读全文