# ASP.NET WebAPI怎么實現文件上傳
在Web開發中,文件上傳是常見的功能需求。ASP.NET WebAPI提供了靈活的方式來實現文件上傳功能。本文將介紹兩種主流實現方法:**多部分表單數據(Multipart Form Data)**和**Base64編碼**。
---
## 方法一:Multipart Form Data(推薦)
### 1. 前端準備
使用HTML表單或JavaScript(如`FormData`對象)發送文件:
```html
<form action="/api/upload" method="post" enctype="multipart/form-data">
<input type="file" name="file" />
<button type="submit">上傳</button>
</form>
通過HttpPostedFileBase或IFormFile接收文件(不同.NET版本略有差異):
[HttpPost]
[Route("api/upload")]
public async Task<IHttpActionResult> UploadFile()
{
// 檢查請求是否包含多部分內容
if (!Request.Content.IsMimeMultipartContent())
{
return BadRequest("僅支持多部分表單上傳");
}
var provider = new MultipartMemoryStreamProvider();
await Request.Content.ReadAsMultipartAsync(provider);
foreach (var file in provider.Contents)
{
var fileName = file.Headers.ContentDisposition.FileName.Trim('\"');
var buffer = await file.ReadAsByteArrayAsync();
// 保存文件(示例路徑需替換)
File.WriteAllBytes(Path.Combine("D:\\uploads", fileName), buffer);
}
return Ok("文件上傳成功");
}
適用于小文件或特殊場景,前端將文件轉為Base64字符串通過JSON傳遞:
[HttpPost]
public IHttpActionResult UploadBase64([FromBody] FileModel model)
{
byte[] bytes = Convert.FromBase64String(model.Base64Data);
File.WriteAllBytes($"D:\\uploads\\{model.FileName}", bytes);
return Ok();
}
public class FileModel
{
public string FileName { get; set; }
public string Base64Data { get; set; }
}
Web.config中配置maxRequestLength和maxAllowedContentLengthasync/await提升并發性能通過以上方法,可以輕松實現WebAPI的文件上傳功能。根據實際需求選擇合適方案即可。 “`
(全文約450字)
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。