Ajax实现文件上传功能(Spring MVC)

来源:脚本之家  责任编辑:小易  

是不是不支持JavaScript啊,试下右键项目名--->Project Facets

本文实例为大家分享了Ajax实现文件上传的具体代码,供大家参考,具体内容如下

function deletes(){ if(selectedTR == null){ a

前端表单 和 JQuery jsp/html代码

虚拟一个form表单,然后提交这个表单即可

使用JQury

后台解析ajax传递的数据,这主要看前端传递数据的格式,主要有以下几种常见的。1、前端ajax传

<script src="static/js/jquery-3.4.1.js"></script>

先看控制台network的headers里面到底有没有图片信息,有就是后台代码问题,没有就是前台问题

前端表单

睡觉流口水莫大意,或是疾病的前兆!有些人睡觉的时候爱打呼噜,有些人爱说梦话,还有些人爱磨牙,这些睡觉时的怪癖对我们来说都不会陌生,外加上一个让许多人都中枪的情况——爱流口水,这四种行为简直就是睡觉时的“四大魔怔”有木有?!睡觉爱流口水这个情况,不分男女老少,一般如果是儿童或者小宝宝睡觉流口水,我们就会觉得很正常。但是,对于已经成年的我们来说,为什么长这么大睡觉还会流口水,是正常的么?医学上把这种情况叫做「流涎症」。通常睡觉的时候,我们产生的口水明显比清醒时少;但是在清醒时我们能主动把产生的口水咽下,所以并不会发生口水从嘴角流出来的状况。正常情况下,睡眠时我们也会把口水咽下,但由于各种原因影响了

<form id="form-avatar" enctype="multipart/form-data"> <p>请选择要上传的文件:</p> <p><input type="file" name="file" /></p> <p><input id="btn-avatar" type="button" value="上传" /></p> </form>

这个问题,我想可能需要分不同的情况,比如,小孩多大了,爷爷奶奶是否可以做比较好的养育人,母亲不去外地上班对家庭会造成多大的经济压力。当然,最后我的答案还是:不会!从妈妈自己的体验角度来说,为了上班挣钱错过了孩子成长的每一个美好的瞬间,一定一定会觉得遗憾!从孩子的成长角度来说,三岁之前十分不建议长时间离开母亲,有可能成为没有安全感的人。当然,孩子十三岁也不会愿意离开母亲的。记得有一堂犯罪心理学课程,里面大量的案例都是犯人从小缺乏母爱。

ajax请求服务器

两年前写下爆红朋友圈辞职信的女老师现在怎么样了?两年后的她,走的路多了,哪有不挨太阳晒的理。目前她和老公在云南的一个小镇开了一家客栈,名叫远归客栈,旺季他们在打理客栈,淡季他们依然外出旅行。近日她出了一本书,这本书记录了她爆红前的生活经历,爆红后的心路历程,以及这两年她”失踪“后行走中遇到的种种历程。生活不止眼前的苟且,还有诗和远方的田野,现代人放不开眼前生活的枷锁,看看旁人的经历,也许也是一种慰藉。

<script> function uploadfile(){ $.ajax({ url : "/url/upload", data: new FormData($("#form-avatar")[0]), type : "POST", // 告诉jQuery不要去处理发送的数据,用于对data参数进行序列化处理 这里必须false processData : false, // 告诉jQuery不要去设置Content-Type请求头 contentType : false, success : function(json) { alert("执行成功"); }, error : function(json) { alert("执行失败"); } }); } $("#btn-avatar").on("click",uploadfile); </script>

  “火烧红”也叫焗色红翡,是一种人工着色的红翡。翡翠的焗红色,就是对翡翠样品进行加热,使灰黄、褐黄等颜色的翡翠改变成红色的工艺,是一种加热处理。火烧红翡的“色根”常无定向性,杂乱无章或者呈放射状,质地干燥,透明度差结构破裂。烧红一般是大片的均匀红皮,而且薄厚也很均匀,天然红就很少见。  2烧红一般颜色很死,不像天然红那样活--这个需要长期观察才可以。  3天然红带有像绿色色根一样的走向或者点,而且不规则,这个是烧红做不出来的。  4用放大镜或者肉眼看烧红,会发现红色顺着那些表皮的幼裂(不是大裂)走,这是因为烧的时候有裂的部位更容易氧化所致。      5、在横截面上观察会发现烧红没有颜色由深

Conroller.java

@PostMapping("/upload") public void fileUpload2(@RequestParam("file") CommonsMultipartFile file, HttpServletRequest request) throws IOException { System.out.println("走了"); //上传路径保存设置 String path = request.getServletContext().getRealPath("/upload"); File realPath = new File(path); if (!realPath.exists()) { realPath.mkdir(); } //上传文件地址 System.out.println("上传文件保存地址:" + realPath); //通过CommonsMultipartFile的方法直接写文件(注意这个时候) file.transferTo(new File(realPath + "/" + file.getOriginalFilename())); }

结果

扩展阅读,根据您访问的内容系统为您准备了以下内容,希望对您有帮助。

springmvc ajaxupload上传文件 能不能带参数

可以。

<script type="text/javascript" src="<%=basePath%>/view/common/easyui/ajaxfileupload.js"></script>

<script type="text/javascript">

//全局参数

var attachment_page_url = "admin/attachment/manager/page";

var basepath = '<%=basePath%>';

//单个上传

var uploadUrl = basepath+"portal/attachment/uploadFile";

</script>

ajaxfileupload+springmvc上传多文件的control怎么写

1.Spring mvc

a.xml配置:

[html] view plain copy print?

<bean id="multipartResolver"

class="org.springframework.web.multipart.commons.CommonsMultipartResolver" >

<!-- set the max upload size1MB 1048576 -->

<property name="maxUploadSize">

<value>52428800</value>

</property>

<property name="maxInMemorySize">

<value>2048</value>

</property>

</bean>

b. 服务器端接收解析

[java] view plain copy print?

public void imgUpload(

MultipartHttpServletRequest multipartRequest,

HttpServletResponse response) throws Exception {

response.setContentType("text/html;charset=UTF-8");

Map<String, Object> result = new HashMap<String, Object>();

//获取多个file

for (Iterator it = multipartRequest.getFileNames(); it.hasNext();) {

String key = (String) it.next();

MultipartFile imgFile = multipartRequest.getFile(key);

if (imgFile.getOriginalFilename().length() > 0) {

String fileName = imgFile.getOriginalFilename();

//改成自己的对象哦!

Object obj = new Object();

//Constant.UPLOAD_GOODIMG_URL 是一个配置文件路径

try {

String uploadFileUrl = multipartRequest.getSession().getServletContext().getRealPath(Constant.UPLOAD_GOODIMG_URL);

File _apkFile = saveFileFromInputStream(imgFile.getInputStream(), uploadFileUrl, fileName);

if (_apkFile.exists()) {

FileInputStream fis = new FileInputStream(_apkFile);

} else

throw new FileNotFoundException("apk write failed:" + fileName);

List list = new ArrayList();

//将obj文件对象添加到list

list.add(obj);

result.put("success", true);

} catch (Exception e) {

result.put("success", false);

e.printStackTrace();

}

}

}

String json = new Gson().toJson(result,

new TypeToken<Map<String, Object>>() {

}.getType());

response.getWriter().print(json);

}

//保存文件

private File saveFileFromInputStream(InputStream stream, String path,

String filename) throws IOException {

File file = new File(path + "/" + filename);

FileOutputStream fs = new FileOutputStream(file);

byte[] buffer = new byte[1024 * 1024];

int bytesum = 0;

int byteread = 0;

while ((byteread = stream.read(buffer)) != -1) {

bytesum += byteread;

fs.write(buffer, 0, byteread);

fs.flush();

}

fs.close();

stream.close();

return file;

}

2.关于前端代码

a.修改ajaxfileupload.js

先到官网下载该插件.

将源文件的createUploadForm的代码替换如下:

[javascript] view plain copy print?

createUploadForm: function(id, fileElementId, data)

{

//create form

var formId = 'jUploadForm' + id;

var fileId = 'jUploadFile' + id;

var form = jQuery('<form action="" method="POST" name="' + formId + '" id="' + formId + '" enctype="multipart/form-data"></form>');

if (data) {

for ( var i in data) {

jQuery(

'<input type="hidden" name="' + i + '" value="'

+ data[i] + '" />').appendTo(form);

}

}

for (var i = 0; i < fileElementId.length; i ++) {

var oldElement = jQuery('#' + fileElementId[i]);

var newElement = jQuery(oldElement).clone();

jQuery(oldElement).attr('id', fileElementId[i]);

jQuery(oldElement).attr('name', fileElementId[i]);

jQuery(oldElement).before(newElement);

jQuery(oldElement).appendTo(form);

}

//set attributes

jQuery(form).css('position', 'absolute');

jQuery(form).css('top', '-1200px');

jQuery(form).css('left', '-1200px');

jQuery(form).appendTo('body');

return form;

}

第一步高定

b. 页面代码

html:

[html] view plain copy print?

<input type="button" value="添加附件" onclick="createInput('more');" />

<div id="more"></div>

js:这里可以专门写封装类,以及给file加onchange事件判断文件格式。由于时间有限,未修改

[javascript] view plain copy print?

var count = 1;

/**

* 生成多附件上传框

*/

function createInput(parentId){

count++;

var str = '<div name="div" ><font style="font-size:12px;">附件</font>'+

' '+ '<input type="file" contentEditable="false" id="uploads' + count + '' +

'" name="uploads'+ count +'" value="" style="width: 220px"/><input type="button" value="删除" onclick="removeInput(event)" />'+'</div>';

document.getElementById(parentId).insertAdjacentHTML("beforeEnd",str);

}

/**

* 删除多附件删除框

*/

function removeInput(evt, parentId){

var el = evt.target == null ? evt.srcElement : evt.target;

var div = el.parentNode;

var cont = document.getElementById(parentId);

if(cont.removeChild(div) == null){

return false;

}

return true;

}

下面是2个修改多file用的js,用于显示和删除,可以于上面的合并精简代码:

[javascript] view plain copy print?

function addOldFile(data){

var str = '<div name="div' + data.name + '" ><a href="#" style="text-decoration:none;font-size:12px;color:red;" onclick="removeOldFile(event,' + data.id + ')">删除</a>'+

' ' + data.name +

'</div>';

document.getElementById('oldImg').innerHTML += str;

}

function removeOldFile(evt, id){

//前端隐藏域,用来确定哪些file被删除,这里需要前端有个隐藏域

$("#imgIds").val($("#imgIds").val()=="" ? id :($("#imgIds").val() + "," + id));

var el = evt.target == null ? evt.srcElement : evt.target;

var div = el.parentNode;

var cont = document.getElementById('oldImg');

if(cont.removeChild(div) == null){

return false;

}

return true;

}

ajax上传文件:

[javascript] view plain copy print?

function ajaxFileUploadImg(id){

//获取file的全部id

var uplist = $("input[name^=uploads]");

var arrId = [];

for (var i=0; i< uplist.length; i++){

if(uplist[i].value){

arrId[i] = uplist[i].id;

}

}

$.ajaxFileUpload({

url:'xxxxx',

secureuri:false,

fileElementId: arrId, //这里不在是以前的id了,要写成数组的形式哦!

dataType: 'json',

data: {

//需要传输的数据

},

success: function (data){

},

error: function(data){

}

});

}

求解Spring mvc 文件上传采用jquery插件 AjaxFileUpload.js 出现的一些问题

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

<head>

<title>checkbox</title>

<script src="js/jquery-1.3.2.js" type="text/javascript"></script>

<script src="js/1.js" type="text/javascript"></script>

</head>

<body>

<table id="table1">

<tr>

<td><input type="checkbox" value="1"/>1</td>

<td id="k_1"><input type="text" name="student" id="s_1" readonly="true"/></td>

</tr>

<tr>

<td><input type="checkbox" value="2"/>2</td>

<td id="k_2"><input type="text" name="student" id="s_2" readonly="true"/></td>

</tr>

<tr>

<td><input type="checkbox" value="3"/>3</td>

<td id="k_3"><input type="text" name="student" id="s_3" readonly="true"/></td>

</tr>

<tr>

<td><input type="checkbox" value="4"/>4</td>

<td id="k_4"><input type="text" name="student" id="s_4" readonly="true"/></td>

</tr>

</table>

</body>

</html>

-------------------------------------------------------------

$(document).ready(function() {

$("td[id^='k_']").hide();

var check = $(":checkbox"); //得到所有被选中的checkbox

var actor_config; //定义变量

check.each(function(i){

actor_config = $(this);

actor_config.click(

function(){

if($(this).attr("checked")==true){

$("#k_"+$(this).val()).show();

}else{

$("#k_"+$(this).val()).hide();

}

}

);

});

});

springMVC jsp页面使用ajax方式将数据(上传图片对应的数据流?)传递到controller中处理

客户端将图片转为BASE64,以字符串传到后端,再转成字节流保存。

springmvc+ajax上传图片的问题。传过去的是空值.怎么接收图片??

因为SpringMVC只有GET请求才能通过方法上加参数获取到值,POST是不能通过这种方式获取的,可以通过request.getParameter(key) 或者 封装成对象(属性对应前端参数)会自动填充。

另外我记得Ajax上传文件不能直接用$.ajax这种方式传,我的方法如下:

var form = new FormData();

var xhr = new XMLHttpRequest();

xhr.open("post", "url", true);

xhr.onload = function () {

alert("上传完成!");

};

xhr.send(form);

  • 本文相关:
  • 基于jquery ajax的多文件上传进度条过程解析
  • 利用springmvc和ajax实现文件上传功能
  • php实现带进度条的ajax文件上传功能示例
  • php+ajax 文件上传代码实例
  • ajaxupload.js实现文件上传
  • ajaxupload.js实现文件上传功能
  • php+ajax实现无刷新文件上传功能(ajaxuploadfile)
  • ajaxfileupload实现多文件上传功能
  • ajaxfileupload+struts2实现多文件上传功能
  • ajaxfileupload结合struts2实现多文件上传(动态添加文件上传框)
  • 用ajax来控制书签和回退按钮的代码
  • ajax客户端异步调用服务端的实现方法(js调用cs文件)
  • ajax传输中文乱码问题的解决办法
  • 如何解决jquery ajaxsubmit提交中文乱码
  • jquery ajax json 数据的遍历代码
  • mui框架ajax请求webservice接口实例
  • ajax解决缓存的5种方法总结(推荐)
  • ajax提交post请求案例分析
  • ajax实现无刷新分页实例代码
  • js+ajax异步从优酷专辑中采集所有视频及信息
  • springmvc ajaxupload上传文件 能不能带参数
  • ajaxfileupload+springmvc上传多文件的control怎么写
  • 求解Spring mvc 文件上传采用jquery插件 AjaxFileUpload.js 出现的一...
  • springMVC jsp页面使用ajax方式将数据(上传图片对应的数据流?)传递到controll...
  • springmvc+ajax上传图片的问题。传过去的是空值.怎么接收图片??
  • springMvc 用ajax调用controller中的方法
  • 谁能给我一个spring mvc实现ajax异步请求到后台取数据在前台显示的例子,最好带注释
  • dojo ajax 怎样上传文件到spring mvc 控制层
  • jquery如何上传包含包含JSON数组的参数,spring-mvc框架如何接受
  • 用ajax来上传form表单多个input,上传多张图片,后天用springmvc,但是总是空值
  • 免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 帮助中心 - 频道导航
    Copyright © 2017 www.zgxue.com All Rights Reserved