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

XMLHttpRequest 异步请求servlet 上传文件并且带有参数

XMLHttpRequest 可以异步请求servlet,在请求servlet的时候可以带有参数和上传文件,下面我们直接来看代码:

 下面在页面中定义了两个文本标签和一个文件上传的标签

<input type="text" id="username" /><input type="text" id="password" /><input type="file" id="myfile"> <button onclick="doLogin()">登录</button><script type="text/javascript">function doLogin(){const xhr=new XMLHttpRequest();xhr.open("post","./fileservlet",true)let formData=new FormData();let username=document.getElementById("username").value;let password=document.getElementById("password").value;let obj=document.getElementById("myfile");formData.append("username",username);formData.append("password",password);formData.append("myfiles",obj.files[0]);xhr.send(formData);xhr.onreadystatechange=function(){console.log(xhr.readyState)}}</script>

接下来看fileServlet 的处理,如何同步接收文件和参数

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {Collection<Part> parts = request.getParts();for (Part part : parts) {String name = part.getName();if (part.getSubmittedFileName() == null) {// 这是一个普通字段String value =getValue(part);System.out.println("Field " + name + ": " + value);} else {// 这是一个文件字段String fileName = part.getSubmittedFileName();String contentType = part.getContentType();long size = part.getSize();System.out.println(fileName);// ... 处理文件上传part.write(path + fileName); part.delete();}}}// 一个辅助方法,用于从 Part 中读取字符串值private String getValue(Part part) throws IOException {// 通过 part.getInputStream() 读取输入流,然后转换为字符串// 这里是一个简化的示例,实际使用时可能需要处理编码return new String(part.getInputStream().readAllBytes(), "UTF-8");}

通过判断文件的名字来判断是普通的参数还是文件

利用servlet3.0+ 的part 方式来获取参数和文件

希望对你有所帮助

http://www.dtcms.com/a/449501.html

相关文章:

  • Python私教FastAPI+React构建Web应用01 概述
  • 深入理解操作系统进程:管理的本质与“先描述,再组织“的核心逻辑
  • 网站手机自适应无锡产品排名优化
  • 深度学习(十五):Dropout
  • 收录提交大全成都百度seo推广
  • wordpress本地更换为网站域名龙华区网站建设
  • 高佣金返利平台的数据一致性挑战:基于Seata的分布式事务解决方案与补偿机制设计
  • 外包网站开发多少钱安监局网站做应急预案备案
  • go build命令
  • Go语言入门(22)-goroutine
  • 网站建设及编辑岗位职责网站做查赚钱
  • 开源革命下的研发突围:Meta Llama系列模型的知识整合实践与启示
  • 做的网站怎样更新排名优化网站seo排名
  • 鸿蒙NEXT网络通信实战:使用HTTP协议进行网络请求
  • FastApi项目启动失败 got an unexpected keyword argument ‘loop_factory‘
  • 杭州有专业做网站的吗用.net做购物网站
  • 什么是 mesh 组网
  • 网站建设什么行业创建个人网站教案
  • 十五、深入理解 SELinux
  • 10.6作业
  • 《投资-70》投资、投机、赌博的比较,一个靠企业内在的价值增值、一个靠市场的价格波动、一个全靠随机性的运气。
  • 前端知识详解——HTML/CSS/Javascript/ES5+/Typescript篇/算法篇
  • 【MySQL】 索引特性详解
  • FreeRTOS实现微秒级时间同步(基于1588V2)
  • 网站基本要素网站建设 主要学是么
  • Java包的命名,常见的包类,如何导入包
  • 滑动窗口题目:替换后的最长重复字符
  • 谷歌seo建站成都不能去的建筑设计公司
  • 贵阳网站制作企业陕西省建设网三类人员证书打印
  • 【小沐学WebGIS】基于Three.JS绘制飞行轨迹Flight Tracker(Three.JS/ vue / react / WebGL)