jsp通过ajax上传文件,基于jquery

jsp通过ajax上传文件,基于jquery前言推荐讲解 使用 ajax 提交 form 表单 包括 ajax 文件上传推荐讲解 HTML5 Ajax 上传文件建议 看这篇之前 请先了解直接 form 表单提交 servlet 方式上传文件 nbsp nbsp jsp 上传文件到服务器 因为我下面 servlet 用的文件上传方式在里面有讲解 所以此篇不赘述 案例前端 jsp 代码 lt divstyle width 6

#前言

推荐讲解:使用ajax提交form表单,包括ajax文件上传

推荐讲解:HTML5+Ajax上传文件

建议:看这篇之前,请先了解直接form表单提交servlet方式上传文件  jsp上传文件到服务器,因为我下面servlet用的文件上传方式在里面有讲解,所以此篇不赘述。

#案例

前端jsp代码:

 
  

js代码实现uploadFiles函数,函数内执行ajax

/* 上传文件 */ function uploadFiles(inputid,type) { var formData=new FormData(); formData.append("file",$('#'+inputid).prop('files')[0]); formData.append('type',type); $.ajax({ type:'POST', url:'/ServletUpload', data:formData, contentType: false,// 注意:让jQuery不要处理数据 processData: false,// 注意:让jQuery不要设置contentType success:function (msg) { console.log("上传成功"); window.location.reload(); }, error:function (mag) { console.log("上传失败,请重试"); alert("上传失败,请重试"); // window.location.reload(); } }); }

最后是servlet代码:

package Servlet; import Beans.User; import Mysql.SQL; import org.apache.commons.fileupload.FileItem; import org.apache.commons.fileupload.FileUploadException; import org.apache.commons.fileupload.disk.DiskFileItemFactory; import org.apache.commons.fileupload.servlet.ServletFileUpload; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.Part; import java.io.*; import java.text.SimpleDateFormat; import java.util.*; @WebServlet(name = "ServletUpload",urlPatterns = {"/ServletUpload"}) public class ServletUpload extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { uploadFiles(request,response); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { return; } private void uploadFiles(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("UTF-8"); PrintWriter out=response.getWriter(); String ret="No"; try { // 配置上传参数 DiskFileItemFactory factory = new DiskFileItemFactory(); ServletFileUpload upload = new ServletFileUpload(factory); // 解析请求的内容提取文件数据 @SuppressWarnings("unchecked") List 
  
    formItems = upload.parseRequest(request); //获取普通参数 Map 
   
     field=new HashMap<>(); for (FileItem item : formItems){ if(item.isFormField()){ field.put(item.getFieldName(),item.getString()); } } String type=field.get("type");//我自己规定的类型,区分文件是干嘛的 int succ=0; // 迭代表单数据 for (FileItem item : formItems) { // 处理不在表单中的字段,即文件 if (!item.isFormField()) { String fileName = item.getName(); //获取上传的文件名 String fileType=fileName.substring(fileName.lastIndexOf(".")+1); //定义上传文件的存放路径 String path = request.getServletContext().getRealPath("/upload/"+type); path=path.replace("\\","/");//一定要加上,不然路径在插入数据库时会出错 //定义上传文件的完整路径 String fileSaveName= new SimpleDateFormat("yyyyMMddhhmmss").format(new Date()).toString(); fileSaveName+="."+fileType; String filePath = String.format("%s/%s",path,fileSaveName); File storeFile = new File(filePath); //如果父目录不存在,就创建他 if(!storeFile.getParentFile().exists()){ storeFile.getParentFile().mkdirs(); } // 在控制台输出文件的上传路径 System.out.println(filePath); // 保存文件到硬盘 item.write(storeFile); //以下是将路径信息插入数据库,不必关注 /............/ succ++; //多上传了一个文件 } } } catch (FileUploadException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } if(succ>0){ ret="Yes"; } out.print(ret); out.flush(); out.close(); } } 
    
  

如有错误,请帮我指正,谢谢

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/224936.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月17日 上午10:48
下一篇 2026年3月17日 上午10:48


相关推荐

  • 重启nginx后丢失nginx.pid的解决方法

    重启nginx后丢失nginx.pid的解决方法

    2021年10月8日
    98
  • jlink 与 swd 接口定义

    jlink 与 swd 接口定义1.JLink介绍J-Link是SEGGER公司为支持仿真ARM内核推出的JTAG仿真器。J-Link支持所有基于ARM架构的处理器或微控制器配合IAREWAR,ADS,KEIL等集成开发环境进行开发过程中进行单步控制执行调试。J-Link除了可以配合集成开发环境进行调试程序,进行程序下载之外,J-Link还可以单独使用。比如在产品的生产环节中,就可以单独使用J-Link进行固件的下载。JLink,SWD接口定义缺口向左,左边为JLink接口定义,右边为SWD接口定义JTAG

    2022年4月25日
    89
  • python做得怎么变成exe_Python如何生成exe文件?

    python做得怎么变成exe_Python如何生成exe文件?背景图来源:click斗鱼直播间真实rtmp地址获取(含工具类下载)​zhuanlan.zhihu.com最经典的Python爬虫(图片)案例​zhuanlan.zhihu.com写在前面:之前用python生成过可执行的exe文件(斗鱼推流地址exe,图片exe,芳儿小团子千人成像exe,批量string翻译等等),部分如上链接。今天又遇到:需将word里面的表格的数据提取出来,写入到exce…

    2022年5月4日
    55
  • 留言板的代码_留言板留言大全短句

    留言板的代码_留言板留言大全短句<!DOCTYPEhtml><htmllang=”en”><head><metacharset=”UTF-8″><metahttp-equiv=”X-UA-Compatible”content=”IE=edge”><metaname=”viewport”content=”width=device-width,initial-scale=1.0″><title>D.

    2022年10月21日
    4
  • MFC读取Excel(一)

    MFC读取Excel(一)软件 vs2013 程序功能 MFC 读取 Excel 里的第一个单元格的值步骤 第一步 创建基于对话框的 MFC 工程第二步 添加库 添加 Excel 类库在工程名上右键 选择 添加 类 或者点击菜单栏的 项目 gt 添加类 选择 TypeLib 中的 MFC 类 MFCClassFrom 类来源选 注册表 在可用的类型库中选择 Microsoft

    2026年3月20日
    4
  • Elasticsearch-深入理解索引原理

    Elasticsearch-深入理解索引原理

    2021年11月26日
    49

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号