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 ...
随机推荐
- 检查windows系统支持的密码套件
Windows 10客户端及Windows server 2016 服务器可以使用powershell 命令获得系统支持的密码套件列表,禁用启用相应的密码套件. #命令链接:https://techn ...
- PHP-7的FPM服务的启动
1.PHP 7的FPM服务位置:/ect/init.d/php7.0-fpm 2.启动:sudo service php7.0-fpm reload
- php实现session入库
为什么要把session存入数据库?有什么用? 可以:统计在线人数,现实多站点session共享(通行证),控制同个账号登入人数等. 要实现session的入库,有关键的几个基本知识: session ...
- Xman资格选拔赛-web
variacover 这道题一打开就是源码,主要就是根据源码构造url.其中,它接收的参数只有b,但源码中要获取flag的关键参数是a[0].parse_str()函数的作用是把查询字符串解析到变量中 ...
- Hadoop HBase概念学习系列之HBase里的长表VS宽表VS窄表(十五)
有时候啊,HBase表的设计方案通常,还会考虑如下一些因素,当然,这只是考虑范围里的部分呢. 更多的行还是更多的版本?后者使用了HBase自带的功能.但是需要在列簇中定义最大版本数,这样做可能有风险. ...
- 《关于oracle数据库的勒索病毒的预警》
近日,接部分机构反馈和安全厂商提醒,针对oracle数据库的勒索病毒攻击数量增加.该病毒存在较长潜伏期,会根据数据库实例创建时间距今是否满足1200天决定是否发起攻击.攻击通过执行恶意SQL脚本,加密 ...
- Springboot+RestTemplate 简单使用
spring框架提供的RestTemplate类可用于在应用中调用rest服务,它简化了与http服务的通信方式,统一了RESTful的标准,封装了http链接, 我们只需要传入url及返回值 ...
- 自定义shell命令--闪烁的字母(PIL实现)
之前看到shell命令行,有人写过漫天下字母的cmatrix,想自己动手用python写一个类似,但是比较有自己风格的shell屏保 大致效果如下: 制作这个的大体思路比较简单: 1.利用python ...
- 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 ...
- salt常用命令(一)
查看模块包含哪些函数 salt 'node' sys.list_functions test 查看函数的用法 salt 'node' sys.doc test.echo 使用模块中的函数 salt ' ...