300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > SSM框架上传文件并不刷新页面 并预览图片

SSM框架上传文件并不刷新页面 并预览图片

时间:2022-11-20 05:28:20

相关推荐

SSM框架上传文件并不刷新页面 并预览图片

效果图:

Jsp代码(样式自己调):

<img id="HeadImg" src="" data-bd-imgshare-binded="1" style="height: 120px;width: 120px;"><input type="file" id="SelectTheFile" name="SelectTheFile" hidden><a id="SelectThe" href="javascript:;">选择文件</a>

Js代码:

var ImageReader=new FileReader();/// FileReader接口,用于读取文件//回调函数onLoad异步ImageReader.onload = function (evt) {$("#HeadImg").attr("src", evt.target.result);//将数据结果赋值给imges的src};//正则表达式过滤上传的图片类型regexImageFilter = /^(?:image\/bmp|image\/png|image\/jpeg|image\/jpg)$/i;$("#SelectTheFile").change(function () {var imgFile= $("#SelectTheFile").prop('files')[0];//prop添加属性名称console.log(imgFile);if(imgFile!=undefined){var Type = imgFile.type;//加载img标签 ,判断是否是图片类型if (!regexImageFilter.test(Type)) {alert("选择的不是图片类型!")$("#SelectTheFile").val("");}//readAsDataURL()方法可以获取API异步读取的文件数据,另存为数据URL,将该URL绑定到img标签的src属性上,就可以实现图片上传的预览效果ImageReader.readAsDataURL(imgFile);}});

用ajax对表单进行序列化并上传,会出现报以下错

原来不仅仅是form的enctype="multipart/form-data"问题,普通的form表单进行序列化只是只能传递一般的参数,上传文件的文件流是无法被序列化并传递的。所以我们需要用FormData的对象。

参考:/zh-CN/docs/Web/API/XMLHttpRequest/FormData

代码如下:

//对from表单创建FormData对象var oData = new FormData(document.forms.namedItem("UserForm" )); var oReq = new XMLHttpRequest(); oReq.open( "POST", "路径" , true ); oReq.onload = function(data) { //接收后台传递的参数alert(oReq.responseText);}; oReq.send(oData);

后台代码如下:

public String ModifyTheUser(@RequestParam(value="input的name",required=true)MultipartFile myfile) throws IOException{if (myfile.getSize() > 0) {//路径String path = “上传的路径”;System.out.println(path);//获取文件原名String fullName=myfile.getOriginalFilename();//获取扩展名称String ext=fullName.substring(fullName.lastIndexOf("."));//拼接文件保存的名称String fileName=System.nanoTime()+ext;//保存文件FileUtils.writeByteArrayToFile(new File(path, fileName), myfile.getBytes());}return “”;}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。