当前位置: 首页 > news >正文

.NetCore+vue3上传图片 Multipart body length limit 16384 exceeded.

实现目标。点击图片上传头像

效果图

在这里插入图片描述

前端部分图片上传关键代码

<div class="avatar-wrap"><el-imagestyle="width: 154px; height: 154px":src="form.headPic":fit="fit"/></div><div class="upload-box"><el-uploadclass="avatar-uploader":show-file-list="false":on-success="handleAvatarSuccess":before-upload="beforeAvatarUpload":http-request="customUpload"><!-- 自定义上传按钮 --><div class="custom-upload-btn"><span>更换头像</span></div></el-upload></div>

上传js部分

<script>
import { ref, reactive, onMounted } from "vue";
import { uploadAvatar } from "../../api/auth";
import { ElMessage } from "element-plus";
export default {setup() {const fit = ref("cover");const form = reactive({userId: 0,headPic:"https://ww1.sinaimg.cn/mw690/9516662fgy1hct88xfrd9j20k00k0dho.jpg",userName: "",phone: "",});// 上传成功后的处理函数const handleAvatarSuccess = (response, file) => {};// 上传之前的检查函数const beforeAvatarUpload = (file) => {const isJPG = file.type === "image/jpeg" || file.type === "image/png";const isLt2M = file.size / 1024 / 1024 < 2;if (!isJPG) {this.$message.error("上传头像图片只能是 JPG/PNG 格式!");}if (!isLt2M) {this.$message.error("上传头像图片大小不能超过 2MB!");}return isJPG && isLt2M;};const customUpload = async (options) => {const { file, onSuccess, onError } = options;const formData = new FormData();formData.append("file", file);try {const response = await uploadAvatar(formData);onSuccess(response.data); // 上传成功时的回调} catch (error) {onError(error); // 上传失败时的回调ElMessage.error("上传失败,请重试");}};return {fit,form,customUpload,beforeAvatarUpload,handleAvatarSuccess,};},
};

auth.js

//头像上传
export function uploadAvatar(info) {return request({url: "/Pictrue/TestForm",headers: {"Content-Type": "multipart/form-data",},method: "post",data: info,});
}

有问题的后台【接口本身没有问题,小程序上传也使用的这个接口不会有问题】

 public async Task<Result> PicUploadToUrl(){try{var files = Request.Form.Files;if (files.Count > 0){List<string> urlList = new List<string>();foreach (var item in files){string[] arr = item.FileName.Split('.');              //得到当前的图片对象string format = arr[arr.Length - 1];           //得到图片后缀名称var rst = await pictureService.PicUploadToUrl(item.OpenReadStream(), item.FileName, format);if (rst.IsSuccess)urlList.Add(rst.Message);elsereturn rst;}GC.Collect();return Result.NewSuccess(urlList);}return Result.NewError(message: "图片上传失败");}catch (Exception ex){NLogUtil.Default.Log(LogLevel.Error, "PicUploadToUrl.上传错误:" + ex.Message);return Result.NewError(message: "图片上传失败");}}

解决办法,改变接收的方式

[HttpPost]
[DisableRequestSizeLimit]
public async Task<Result> TestForm([FromForm] IFormCollection formData)
{try{var files = formData.Files;if (files.Count > 0){List<string> urlList = new List<string>();foreach (var item in files){string[] arr = item.FileName.Split('.');              //得到当前的图片对象string format = arr[arr.Length - 1];           //得到图片后缀名称var rst = await pictureService.PicUploadToUrl(item.OpenReadStream(), item.FileName, format);if (rst.IsSuccess)urlList.Add(rst.Message);elsereturn rst;}GC.Collect();return Result.NewSuccess(urlList);}return Result.NewError(message: "图片上传失败");}catch (Exception ex){NLogUtil.Default.Log(LogLevel.Error, "PicUploadToUrl.上传错误:" + ex.Message);return Result.NewError(message: "图片上传失败");}
}

注意startup.cs中的配置。这里根据实际情况进行配置需要的即可

 public void ConfigureServices(IServiceCollection services){//设置接收文件长度的最大值。
services.Configure<FormOptions>(x =>
{x.ValueLengthLimit = int.MaxValue;x.ValueCountLimit = int.MaxValue;x.MultipartBodyLengthLimit = int.MaxValue;//2147483647;x.MultipartHeadersCountLimit = int.MaxValue;x.MultipartBoundaryLengthLimit = int.MaxValue;x.BufferBodyLengthLimit = long.MaxValue;x.BufferBody = true;x.KeyLengthLimit = int.MaxValue;x.MultipartHeadersLengthLimit = int.MaxValue;
});}

相关文章:

  • redis常用知识汇总(包括 jedis 和 springboot 整合 redis)
  • Matlab自学笔记三十五:表table数据与外部文件的读入和写出
  • SpringBoot项目是如何启动
  • 工厂ERP管理系统实现源码(JAVA)
  • Linux查找文件 find、locate、grep等使用说明
  • Lua 脚本在 Redis 中执行时的原子性以及与redis的事务的区别
  • PurchasereturnController
  • HTML/CSS/JS学习笔记 Day1(HTML--工具语法规范)
  • 忘记开 long long
  • 编写Dockerfile第二版
  • emlogpro插件-优雅的时间进度侧边栏小工具插件
  • Kafka (快速)安装部署
  • jenkins工具的介绍和gitlab安装
  • 算法:插入排序
  • 杀毒软件火绒下载地址
  • CAP 一致性协议及应用解析
  • docker python 配置
  • java B2B2C 源码多租户电子商城系统-Kafka基本使用介绍
  • Java 网络编程(2):UDP 的使用
  • JavaScript HTML DOM
  • Java应用性能调优
  • Js基础——数据类型之Null和Undefined
  • Terraform入门 - 1. 安装Terraform
  • Vue小说阅读器(仿追书神器)
  • 编写高质量JavaScript代码之并发
  • 关于springcloud Gateway中的限流
  • 理清楚Vue的结构
  • 用jQuery怎么做到前后端分离
  • raise 与 raise ... from 的区别
  • SAP CRM里Lead通过工作流自动创建Opportunity的原理讲解 ...
  • ​ 轻量应用服务器:亚马逊云科技打造全球领先的云计算解决方案
  • ​LeetCode解法汇总518. 零钱兑换 II
  • ​RecSys 2022 | 面向人岗匹配的双向选择偏好建模
  • #考研#计算机文化知识1(局域网及网络互联)
  • #在 README.md 中生成项目目录结构
  • ( 10 )MySQL中的外键
  • (Matalb回归预测)PSO-BP粒子群算法优化BP神经网络的多维回归预测
  • (zz)子曾经曰过:先有司,赦小过,举贤才
  • (八)Docker网络跨主机通讯vxlan和vlan
  • (附源码)springboot 房产中介系统 毕业设计 312341
  • (附源码)springboot高校宿舍交电费系统 毕业设计031552
  • (附源码)ssm本科教学合格评估管理系统 毕业设计 180916
  • (南京观海微电子)——I3C协议介绍
  • (七)理解angular中的module和injector,即依赖注入
  • (十三)MipMap
  • (一)Java算法:二分查找
  • ***linux下安装xampp,XAMPP目录结构(阿里云安装xampp)
  • .bat批处理(八):各种形式的变量%0、%i、%%i、var、%var%、!var!的含义和区别
  • .bat批处理(六):替换字符串中匹配的子串
  • .describe() python_Python-Win32com-Excel
  • .NET 8 跨平台高性能边缘采集网关
  • .NET/ASP.NETMVC 大型站点架构设计—迁移Model元数据设置项(自定义元数据提供程序)...
  • @JsonSerialize注解的使用
  • @serverendpoint注解_SpringBoot 使用WebSocket打造在线聊天室(基于注解)
  • [ HTML + CSS + Javascript ] 复盘尝试制作 2048 小游戏时遇到的问题