当前位置: 首页 > 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;
});}
http://www.lryc.cn/news/432183.html

相关文章:

  • 机器学习如何用于音频分析?
  • 适合程序员在周末阅读的历史书籍:理解人性和世界
  • 探索Mem0:下一代人工智能与机器学习内存管理基础设施(二)Mem0+Ollama 部署运行
  • C++入门10——stack与queue的使用
  • 詳細解析軟路由與代理爬蟲池-okeyproxy
  • 视频监控管理平台LntonAIServer视频智能分析噪声检测应用场景
  • 技术分享-商城篇-用户中心-注销修改(二十三)
  • Linux-实用指令
  • 【MySQL00】【 杂七杂八】
  • 计算机网络 第2章 物理层
  • 解决:Module build failed (from ./node_modules/sass-loader/dist/cjs.js)问题
  • 【 html+css 绚丽Loading 】 000041 三才移形三角
  • ASP.NET Core 入门教学十六 防止常见的Web攻击
  • 单刀直入@ComponentScan之 资源加载
  • SAPUI5基础知识25 - 聚合绑定(Aggregation Binding)
  • 【Python 千题 —— 算法篇】寻找两个正序数组的中位数
  • Autoware 定位之初始姿态输入(九)
  • C# 自定义传值窗体-适合多参数传值
  • Ubuntu20.04+ros-noetic配置Cartographer
  • Visual Studio 2022 下载和安装
  • 在 Windows 环境下实现免密登录 Linux 服务器
  • Computer Exercise
  • 利用Stable Diffusion AI图像模型评估智能车模型算法表现(下篇)
  • 音视频入门基础:WAV专题(8)——FFmpeg源码中计算WAV音频文件AVStream的time_base的实现
  • springboot中的请求过滤filter与拦截interceptor分析
  • Node.js入门与生态全解析:包管理与构建工具详解
  • 828华为云征文|华为云Flexus X实例docker部署harbor镜像仓库
  • fedora siliverblue adb
  • mybatisplus查询指定字段
  • 探寻 IP 代理地址繁多之因