jquery ajax 上传文件和传递参数到一个接口的实现方法
参考: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 上传文件和传递参数到一个接口的实现方法的更多相关文章
- IE8/9 JQuery.Ajax 上传文件无效
IE8/9 JQuery.Ajax 上传文件有两个限制: 使用 JQuery.Ajax 无法上传文件(因为无法使用 FormData,FormData 是 HTML5 的一个特性,IE8/9 不支持) ...
- jQuery ajax上传文件实例
jQuery ajax上传文件实例 <form id="form" enctype="multipart/form-data"><input ...
- flask jQuery ajax 上传文件
1.html 代码 <div> <form id="uploadForm" enctype="multipart/form-data" > ...
- jquery ajax 上传文件
html:<!-- /.tab-pane --> <div class="tab-pane" id="head_portrait"> & ...
- ASP.NET Jquery+ajax上传文件(带进度条)
效果图 支持ie6+,chrome,ie6中文文件名会显示乱码. 上传时候会显示进度条. 需要jquery.uploadify.js插件,稍后会给出下载 前台代码 <%@ Page Langua ...
- jQuery Ajax 上传文件改进
如果用户取消上传后 背景 提示自动消失了.... 修正Bug.... 同时也更新了不同上传类型的提示字体大小... 2017-05-26 增加了鼠标释放提示 先看之前的效果: 再看现在的效果: 升级 ...
- jQuery Ajax 上传文件夹及文件
我们先来看一下文件夹结构 这是上传处理的: 看一下系统日志: 升级 HTML5文件实现拖拽上传提示效果改进(支持三种状态提示) 拖拽过程详解: 1:文件未拖出文件选择框的时候提示:将要上传的文件或文件 ...
- asp.net 中使用JQuery Ajax 上传文件
首先创建一个网页,网页中添加如下代码. <h3>Upload File using Jquery AJAX in Asp.net</h3> <table> < ...
- jQuery Ajax上传文件
JS代码: //保存 function btnAdd() { var formData = new FormData($("#frm")[0]); $.ajax({ url: &q ...
随机推荐
- 微信自定义菜单的emoji图标
微信公众号自定义菜单添加emoji表情图标 第一步:打开微信公众平台接口调试工具,点击前往接口调试工具: 第二步:把这段代码 {"button":[{"sub_butt ...
- Linux 系统开机自启的配置文件
程序开机启动的配置文件(/etc/rc.local) # 系统级别 ntsysv # 图形界面设置自启程序 chkconfig(/etc/init.d/sshd) 处理开机启动的文件 # 用户级别 # ...
- [原创]获取JS数组最大值、最小值
核心关键 JS有Array数组对象,使用prototype内置属性扩展,增加Array数组max().min()方法 具体代码 //最小值 Array.prototype.min = function ...
- How To create extension in Hybris(创建Hybris的扩展)
How To create extension in Hybris What is an extension? An extension is an encapsulated piece of the ...
- Civil War
Civil War 编辑 <Civil War>是美国硬摇滚乐队枪炮与玫瑰的一首单曲,首次收录于1990年的群星慈善专辑<Nobody's Child: Romanian Angel ...
- Session攻击
1.简介 Session对于Web应用无疑是最重要的,也是最复杂的.对于web应用程序来说,加强安全性的第一条原则就是 – 不要信任来自客户端的数据,一定要进行数据验证以及过滤,才能在程序中使用,进而 ...
- POI导出excel,本地测试没问题,linux测试无法导出
java.lang.RuntimeException: java.io.IOException: No such file or directory at org.apache.poi. ...
- 学习python第三天之多行函数
多行函数:(聚合函数/分组函数) 解释:多条数据进入,单条结果出来(多进单出) 1).max(obj):最大值 2).min(obj):最小值 3).sum(num):求和 4).avg(num):求 ...
- 鲜为人知的 Python 语法
所有人(好吧,不是所有人)都知道 python 是一门用途广泛.易读.而且容易入门的编程语言. 但同时 python 语法也允许我们做一些很奇怪的事情. 使用 lambda 表达式重写多行函数 ...
- centos安装swoole
编译安装swoole: cd && wget https://github.com/swoole/swoole-src/archive/1.8.6-stable.tar.gz ...