Net6 Form表单上传文件 ,WebApi接收存储

Net6 Form表单上传文件 ,WebApi接收存储

代码

				var file = Request.Form.Files[0];

                if (file != null)
                {
                    var stream = file.OpenReadStream();
                    byte[] buffer = new byte[stream.Length];
                    stream.Read(buffer, 0, buffer.Length);

                    if (buffer != null)
                    {
                        // 存储文件
                        var path = "../../../Image/" + file.FileName;
                        var result = FileHelper.ByteToFile(buffer, path);
                        if (result)
                        {
                            ResponseData.Data = path;
                        }
                    }

ByteToFile:

/// <summary>
        /// 将byte[]数组保存成文件
        /// </summary>
        /// <param name="byteArray">byte[]数组</param>
        /// <param name="fileName">保存至硬盘的文件路径</param>
        /// <returns></returns>
        public static bool ByteToFile(byte[] byteArray, string fileName)
        {
            bool result = false;
            try
            {
                using (FileStream fs = new FileStream(fileName, FileMode.OpenOrCreate, FileAccess.Write))
                {
                    fs.Write(byteArray, 0, byteArray.Length);
                    result = true;
                }
            }
            catch
            {
                result = false;
            }
            return result;
        }
Web API 接收来自 Form 表单上传文件通常涉及到两个关键步骤:前端表单提交文件,以及后端API处理文件。这里是一个简单的 C# ASP.NET Web API 示例,用于接受 `multipart/form-data` 类型的POST请求,其中包含一个文件字段。 首先,确保已安装Microsoft.AspNet.WebApi.Client NuGet包,以便在客户端发送POST请求。在后端(API控制器): ```csharp using System.IO; using System.Net.Http; using System.Threading.Tasks; using Microsoft.AspNetCore.Mvc; namespace YourProject.Controllers { [Route("api/[controller]")] public class FileController : ApiController { [HttpPost] public async Task<IActionResult> UploadFile(IFormFile file) { if (file == null || file.Length == 0) { return BadRequest("No file uploaded."); } try { string folderPath = "uploads"; // 文件存储路径,根据实际需求设置 var filePath = Path.Combine(folderPath, file.FileName); using (var stream = await file.OpenReadStreamAsync()) { using (FileStream fs = new FileStream(filePath, FileMode.Create)) { await stream.CopyToAsync(fs); } } return Ok($"File '{file.FileName}' successfully uploaded at {filePath}"); } catch (Exception ex) { return StatusCode((int)HttpStatusCode.BadRequest, "Error uploading file: " + ex.Message); } } } } ``` 这个控制器有一个 `UploadFile` 方法,接收名为 `IFormFile` 的参数,它代表了从HTTP POST请求中获取文件数据。我们检查文件是否为空,然后保存到服务器指定的目录。 现在,在前端(通常是JavaScript或jQuery),你可以使用以下代码发起POST请求并上传文件: ```javascript // 假设你已经包含了一个jQuery库 const url = 'https://your-api-url/api/file'; // 替换为你的API URL $(document).ready(function () { $('#fileInput').on('change', function () { const formData = new FormData(); formData.append('file', this.files[0]); $.ajax({ type: 'POST', url: url, data: formData, processData: false, contentType: false, success: function (response) { console.log(response); }, error: function (xhr, status, error) { console.error(status + ': ' + error); } }); }); }); ``` 这里假设有一个ID为 `fileInput` 的HTML文件输入元素 (`<input type="file">`)。选择文件后,前端会创建一个FormData实例并将文件添加进去,然后异步发送到API。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值