vue+asp.net core实现的文件上传

最近做项目需要用户在前端将数据文件上传,服务器解析数据文件将数据保存到数据库。看起来很简单的需求,实现起来一直报错:https://stackoverflow.com/questions/76103063/failed-to-read-the-request-form-unexpected-end-of-stream-the-content-may-have

现在将实现方法贴上:
前端

const upload = (event: any) => {
  debugger
  var e = window.event || event
  console.log(e)
  // 获取当前选中的文件
  var File = e.target.files[0]
  console.log(File) //打印值看下面图片,简单点的话我们直接把这个数据给后台处理就可以了
  var formData = new FormData()
  formData.append('file', event.target.files[0])
  uploadMaterials(formData)
}

export async function uploadMaterials(file: any) {
  const headers = {
    // 'Content-Type': 'multipart/form-data; boundary=----WebKitFormBoundaryxyz',
  }
  return http.postWithHeaders('/Product/UploadProducts', headers, file)
}

注意这里header为空(有些帖子说设置Content-type,但是看起来应用到asp.net core 有点问题)

后端设置


        [HttpPost("UploadProducts")]
        [Consumes("multipart/form-data")]
        public async Task<string> UploadProducts([FromForm] IFormFile file)
        {
            string uploads = Path.Combine(_hostingEnvironment.ContentRootPath, "uploads");
            string filePath = Path.Combine(uploads, file.FileName);
            using (Stream fileStream = new FileStream(filePath, FileMode.Create))
            {
                await file.CopyToAsync(fileStream);
            }
            return file.FileName;
        }

注意这个入参名称,要和前端formdata.append传入的第一个值相同。

  • 9
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值