参考: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封装

<input type="file" id="newTemplateFileId" >
var formData = new FormData();
formData.append('file', $('#newTemplateFileId')[0].files[0]);
formData.append('templatename', $('#newTemplateNameId').val());
formData.append('systype', templateName);
formData.append('templatetype', templatetype);
formData.append('templatejson', templateJsonContent);
$.ajax({
// url:'/RM/views/test/statusJson.json',
url: '/RM/controller/json/ConfigTemplateController/saveMobanContentsAndUploadUserCustomScripts',
type: 'POST',
cache: false,
processData: false,
contentType: false,
data: formData,
success: function (response) {
if (response.status == "1") {
// $('#nextStepBtnId').attr('data-toggle','modal').attr('data-target','#myModal');
alert('保存成功')
}else if (response.status == "0") {
alert(response.msg);
}
}
})
@ResponseBody
@RequestMapping(value = "controller/json/ConfigTemplateController/saveMobanContentsAndUploadUserCustomScripts", method = RequestMethod.POST)
public BaseResult saveMobanContentsAndUploadUserCustomScripts(@Valid ConfigTemplateCustom configTemplateCustom, BindingResult result, @RequestParam(value = "file", required = false) MultipartFile file) throws IOException { if (result.hasErrors()) {
Map<String, Object> map = new HashMap<>();
List<FieldError> fieldErrors = result.getFieldErrors();
for (FieldError fieldError :
fieldErrors) {
map.put(fieldError.getField(), fieldError.getDefaultMessage());
}
return ResultUtil.error(303, "参数异常").add("errorFields", map);
} else { if (configTemplateCustom.getTemplatename() == null || configTemplateCustom.getTemplatename()=="" || configTemplateCustom.getTemplatename().isEmpty()) {
return ResultUtil.error(400, "请填写模板名");
} if (file == null || file.isEmpty()) {
return ResultUtil.error(400, "文件为空,请上传文件后再保存模板");
} // 文件类型分拣
int fileNameLength = file.getOriginalFilename().length();
String beHandFileName = new String(file.getOriginalFilename());
String beHandSuffixName = null;
String beHandedFileNameVbs = beHandFileName.substring(fileNameLength - 4, fileNameLength);
String beHandedFileNameSh = beHandFileName.substring(fileNameLength - 3, fileNameLength);
String beHandedFileNamePl = beHandFileName.substring(fileNameLength - 3, fileNameLength); if (!".sh".equals(beHandedFileNameSh) && !".pl".equals(beHandedFileNamePl)) {
return ResultUtil.error(400, "上传的脚本类型不匹配,当前只支持类unix系列的远程扫描,请上传后缀名为 .sh .pl 的脚本文件");
} if (configTemplateCustomService.checkTemplateName(configTemplateCustom)==false){
return ResultUtil.error(400, "模板名已被使用,请填写新的模板名");
}
ConfigTemplateCustom savedTemplateCustom = configTemplateCustomService.saveAfterFetchId(configTemplateCustom); // if (".vbs".equals(beHandedFileNameVbs)) {
// beHandSuffixName = ".vbs";
// } if (".sh".equals(beHandedFileNameSh)) {
beHandSuffixName = ".sh";
}
if (".pl".equals(beHandedFileNamePl)) {
beHandSuffixName = ".pl";
} File templateDir = new File("C:\\RM-ROOT\\upload\\userCustomScripts\\" + configTemplateCustom.getTemplatename());
templateDir.mkdir(); String path = "C:\\RM-ROOT\\upload\\userCustomScripts\\" + configTemplateCustom.getTemplatename();
String uploadedFileName = configTemplateCustom.getTemplatename() + beHandSuffixName; FileUtils.copyInputStreamToFile(file.getInputStream(), new File(path,
uploadedFileName)); return ResultUtil.success().add("savedTemplateCustom", savedTemplateCustom); } }

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. iOS设计模式 - 模板

    iOS设计模式 - 模板 原理图 说明 定义一个操作中的算法的骨架,而将步骤延迟到子类中.模板方法使得子类可以不改变一个算法的结构即可重定义算法的某些特定步骤. 源码 https://github.c ...

  2. 滑动cell的时候执行动画效果

    滑动cell的时候执行动画效果 效果图: 源码: // // ViewController.m // AniTab // // Created by XianMingYou on 15/2/26. / ...

  3. CVE-2013-2551漏洞成因与利用分析(ISCC2014 PWN6)

    CVE-2013-2551漏洞成因与利用分析 1. 简介 VUPEN在Pwn2Own2013上利用此漏洞攻破了Win8+IE10,5月22日VUPEN在其博客上公布了漏洞的细节.它是一个ORG数组整数 ...

  4. 占位符 %s

    a = input("Name:")b = input("Age:")c = input("Job:")d = input("ho ...

  5. Session攻击

    1.简介 Session对于Web应用无疑是最重要的,也是最复杂的.对于web应用程序来说,加强安全性的第一条原则就是 – 不要信任来自客户端的数据,一定要进行数据验证以及过滤,才能在程序中使用,进而 ...

  6. 关于使用JQ scrollTop方法进行滚动定位

    没图我说个锤子,先来个自拍镇楼. 又到了每周周五总结时间.我广州刘德华又来讲故事了.这一周没啥任务,就一个任务,产品口头交代了两句,也没有psd没有设计图没有样式.自由发挥,你自己敲代码做个作品出来. ...

  7. 【原创】python内存泄漏以及python flask框架莫名coredump

    1.python内存泄漏 今天在看服务器上的进程时,用top查的时候,发现一个一直跑的脚本程序内存竟然达到了1.6G,这个脚本我有印象,一开始仅占用20M左右,显然是内存泄漏了. 用gc和objgra ...

  8. 【cs231n】图像分类-Linear Classification线性分类

    [学习自CS231n课程] 转载请注明出处:http://www.cnblogs.com/GraceSkyer/p/8824876.html 之前介绍了图像分类问题.图像分类的任务,就是从已有的固定分 ...

  9. Centos7安装anaconda3

    Centos7安装anaconda3 1. 安装bunzip2 yum install bunzip2 2. 下载anaconda3 wget https://repo.anaconda.com/ar ...

  10. ansible-playbook快速入门

    一.yaml语法: 1. yaml语法编写 1.1 同层级的字段通过相同缩进表示 1.2 map结构里面key/value用‘:’来分隔 1.3 key/value可以同行写,也可以换行写,换行写必须 ...