参考:https://blog.csdn.net/qq_15674631/article/details/81095284

参考:https://www.jianshu.com/p/46e6e03a0d53  (包含了上传多个文件的方法)

总结: ajax 如果想同时发送文件和参数,那就必须用 formData 封装,如果想接收单个参数,直接key:value的形式写到data:{}里或者用formData append都可以,后端springmvc接收直接用 String xxx , int xxx ,这样接收就行了,不过参数如果多了最好用bean封装

  1. <input type="file" id="newTemplateFileId" >
  1. var formData = new FormData();
  2. formData.append('file', $('#newTemplateFileId')[0].files[0]);
  3. formData.append('templatename', $('#newTemplateNameId').val());
  4. formData.append('systype', templateName);
  5. formData.append('templatetype', templatetype);
  6. formData.append('templatejson', templateJsonContent);
  7. $.ajax({
  8. // url:'/RM/views/test/statusJson.json',
  9. url: '/RM/controller/json/ConfigTemplateController/saveMobanContentsAndUploadUserCustomScripts',
  10. type: 'POST',
  11. cache: false,
  12. processData: false,
  13. contentType: false,
  14. data: formData,
  15. success: function (response) {
  16. if (response.status == "1") {
  17. // $('#nextStepBtnId').attr('data-toggle','modal').attr('data-target','#myModal');
  18. alert('保存成功')
  19. }else if (response.status == "0") {
  20. alert(response.msg);
  21. }
  22. }
  23. })
  1. @ResponseBody
  2. @RequestMapping(value = "controller/json/ConfigTemplateController/saveMobanContentsAndUploadUserCustomScripts", method = RequestMethod.POST)
  3. public BaseResult saveMobanContentsAndUploadUserCustomScripts(@Valid ConfigTemplateCustom configTemplateCustom, BindingResult result, @RequestParam(value = "file", required = false) MultipartFile file) throws IOException {
  4.  
  5. if (result.hasErrors()) {
  6. Map<String, Object> map = new HashMap<>();
  7. List<FieldError> fieldErrors = result.getFieldErrors();
  8. for (FieldError fieldError :
  9. fieldErrors) {
  10. map.put(fieldError.getField(), fieldError.getDefaultMessage());
  11. }
  12. return ResultUtil.error(303, "参数异常").add("errorFields", map);
  13. } else {
  14.  
  15. if (configTemplateCustom.getTemplatename() == null || configTemplateCustom.getTemplatename()=="" || configTemplateCustom.getTemplatename().isEmpty()) {
  16. return ResultUtil.error(400, "请填写模板名");
  17. }
  18.  
  19. if (file == null || file.isEmpty()) {
  20. return ResultUtil.error(400, "文件为空,请上传文件后再保存模板");
  21. }
  22.  
  23. // 文件类型分拣
  24. int fileNameLength = file.getOriginalFilename().length();
  25. String beHandFileName = new String(file.getOriginalFilename());
  26. String beHandSuffixName = null;
  27. String beHandedFileNameVbs = beHandFileName.substring(fileNameLength - 4, fileNameLength);
  28. String beHandedFileNameSh = beHandFileName.substring(fileNameLength - 3, fileNameLength);
  29. String beHandedFileNamePl = beHandFileName.substring(fileNameLength - 3, fileNameLength);
  30.  
  31. if (!".sh".equals(beHandedFileNameSh) && !".pl".equals(beHandedFileNamePl)) {
  32. return ResultUtil.error(400, "上传的脚本类型不匹配,当前只支持类unix系列的远程扫描,请上传后缀名为 .sh .pl 的脚本文件");
  33. }
  34.  
  35. if (configTemplateCustomService.checkTemplateName(configTemplateCustom)==false){
  36. return ResultUtil.error(400, "模板名已被使用,请填写新的模板名");
  37. }
  38. ConfigTemplateCustom savedTemplateCustom = configTemplateCustomService.saveAfterFetchId(configTemplateCustom);
  39.  
  40. // if (".vbs".equals(beHandedFileNameVbs)) {
  41. // beHandSuffixName = ".vbs";
  42. // }
  43.  
  44. if (".sh".equals(beHandedFileNameSh)) {
  45. beHandSuffixName = ".sh";
  46. }
  47. if (".pl".equals(beHandedFileNamePl)) {
  48. beHandSuffixName = ".pl";
  49. }
  50.  
  51. File templateDir = new File("C:\\RM-ROOT\\upload\\userCustomScripts\\" + configTemplateCustom.getTemplatename());
  52. templateDir.mkdir();
  53.  
  54. String path = "C:\\RM-ROOT\\upload\\userCustomScripts\\" + configTemplateCustom.getTemplatename();
  55. String uploadedFileName = configTemplateCustom.getTemplatename() + beHandSuffixName;
  56.  
  57. FileUtils.copyInputStreamToFile(file.getInputStream(), new File(path,
  58. uploadedFileName));
  59.  
  60. return ResultUtil.success().add("savedTemplateCustom", savedTemplateCustom);
  61.  
  62. }
  63.  
  64. }

jquery ajax 上传文件和传递参数到一个接口的实现方法的更多相关文章

  1. IE8/9 JQuery.Ajax 上传文件无效

    IE8/9 JQuery.Ajax 上传文件有两个限制: 使用 JQuery.Ajax 无法上传文件(因为无法使用 FormData,FormData 是 HTML5 的一个特性,IE8/9 不支持) ...

  2. jQuery ajax上传文件实例

    jQuery ajax上传文件实例 <form id="form" enctype="multipart/form-data"><input ...

  3. flask jQuery ajax 上传文件

    1.html 代码 <div> <form id="uploadForm" enctype="multipart/form-data" > ...

  4. jquery ajax 上传文件

    html:<!-- /.tab-pane --> <div class="tab-pane" id="head_portrait"> & ...

  5. ASP.NET Jquery+ajax上传文件(带进度条)

    效果图 支持ie6+,chrome,ie6中文文件名会显示乱码. 上传时候会显示进度条. 需要jquery.uploadify.js插件,稍后会给出下载 前台代码 <%@ Page Langua ...

  6. jQuery Ajax 上传文件改进

    如果用户取消上传后 背景 提示自动消失了.... 修正Bug.... 同时也更新了不同上传类型的提示字体大小... 2017-05-26 增加了鼠标释放提示 先看之前的效果: 再看现在的效果: 升级 ...

  7. jQuery Ajax 上传文件夹及文件

    我们先来看一下文件夹结构 这是上传处理的: 看一下系统日志: 升级 HTML5文件实现拖拽上传提示效果改进(支持三种状态提示) 拖拽过程详解: 1:文件未拖出文件选择框的时候提示:将要上传的文件或文件 ...

  8. asp.net 中使用JQuery Ajax 上传文件

    首先创建一个网页,网页中添加如下代码. <h3>Upload File using Jquery AJAX in Asp.net</h3> <table> < ...

  9. jQuery Ajax上传文件

    JS代码: //保存 function btnAdd() { var formData = new FormData($("#frm")[0]); $.ajax({ url: &q ...

随机推荐

  1. 检查windows系统支持的密码套件

    Windows 10客户端及Windows server 2016 服务器可以使用powershell 命令获得系统支持的密码套件列表,禁用启用相应的密码套件. #命令链接:https://techn ...

  2. PHP-7的FPM服务的启动

    1.PHP 7的FPM服务位置:/ect/init.d/php7.0-fpm 2.启动:sudo service php7.0-fpm reload

  3. php实现session入库

    为什么要把session存入数据库?有什么用? 可以:统计在线人数,现实多站点session共享(通行证),控制同个账号登入人数等. 要实现session的入库,有关键的几个基本知识: session ...

  4. Xman资格选拔赛-web

    variacover 这道题一打开就是源码,主要就是根据源码构造url.其中,它接收的参数只有b,但源码中要获取flag的关键参数是a[0].parse_str()函数的作用是把查询字符串解析到变量中 ...

  5. Hadoop HBase概念学习系列之HBase里的长表VS宽表VS窄表(十五)

    有时候啊,HBase表的设计方案通常,还会考虑如下一些因素,当然,这只是考虑范围里的部分呢. 更多的行还是更多的版本?后者使用了HBase自带的功能.但是需要在列簇中定义最大版本数,这样做可能有风险. ...

  6. 《关于oracle数据库的勒索病毒的预警》

    近日,接部分机构反馈和安全厂商提醒,针对oracle数据库的勒索病毒攻击数量增加.该病毒存在较长潜伏期,会根据数据库实例创建时间距今是否满足1200天决定是否发起攻击.攻击通过执行恶意SQL脚本,加密 ...

  7. Springboot+RestTemplate 简单使用

        spring框架提供的RestTemplate类可用于在应用中调用rest服务,它简化了与http服务的通信方式,统一了RESTful的标准,封装了http链接, 我们只需要传入url及返回值 ...

  8. 自定义shell命令--闪烁的字母(PIL实现)

    之前看到shell命令行,有人写过漫天下字母的cmatrix,想自己动手用python写一个类似,但是比较有自己风格的shell屏保 大致效果如下: 制作这个的大体思路比较简单: 1.利用python ...

  9. 2018 - 2019 CTU Open Contest E. Locker Room 【后缀数组】

    任意门:http://codeforces.com/gym/101954/problem/E E. Locker Room time limit per test 2.0 s memory limit ...

  10. salt常用命令(一)

    查看模块包含哪些函数 salt 'node' sys.list_functions test 查看函数的用法 salt 'node' sys.doc test.echo 使用模块中的函数 salt ' ...