JAVA Ajax 上传文件并带其他参数,前端,后台 demo 源代码-java文件传输

JAVA Ajax 上传文件并带其他参数,前端,后台 demo 源代码-java文件传输

下面代码试用于jsp, freemarker 因为有使用到 https://www.shangyouw.cn${request.contextPath}

html 代码

 <form id="uploadImage" enctype="multipart/form-data" action="https://www.shangyouw.cn${request.contextPath}/re/updateIdCard" method="post"/>
<div class="col-xs-12 col-sm-6">请上传身份证件 <em>*</em><br/>
<input type="file" name="idCardPath" id="idCardPath" accept="image/*" class="form-control picture-address" onchange="checkImage()" required/>
<input type="button" name="upload" id="upload" class="btn btn-success" onclick="doUpload()" value="重新上传证件" />
<input type="hidden" name="uid" id="uid" value="${re.uid}"/>
<input type="hidden" name="id" id="id" value="${re.id}"/>
<#if re.idCardPath_1??><input type="hidden" name="oriIdCardPath" id="oriIdCardPath" value="${re.idCardPath_1}"/>
<a href="https://www.shangyouw.cnhttps://www.shangyouw.cn${request.contextPath}${re.idCardPath_1}" target="_blank"><img id="picture" src="https://www.shangyouw.cnhttps://www.shangyouw.cn${request.contextPath}${re.idCardPath_1}" alt="点击查看原图"/></a></#if>
</div>
</form>

javascript

function doUpload(){
if(document.getElementById('idCardPath').value == ""){
alert("请选择证件照片;");
return false;
}
var fileSize = document.getElementById('idCardPath').files[0]; //获得文件大小;
if(fileSize.size > 1048576 ){ //1*1024*1024
alert("证件照片过大,请小于1M");
return false;
}
var formData = new FormData($("#uploadImage")[0]);
$.ajax({
url:"https://www.shangyouw.cn${request.contextPath}/re/updateIdCard",
type:"POST",
data:formData,
async:false,
cache:false,
contentType:false,
processData:false,
success:function(data){
if(data.success){
//alert( data.resultMsg);
var path = data.resultMsg;
document.getElementById('picture').src="https://www.shangyouw.cn${request.contextPath}"+path;
}else{
alert(data.resultMsg);
}
},
error:function(returndata){
alert("error:"+returndata);
}
});
}

下面为spring boot后台 controller 代码

@RequestMapping(value="/updateIdCard",method=RequestMethod.POST)
public Object uploadPicture(@RequestParam(value = "idCardPath",required=true) MultipartFile file,
@RequestParam(value="uid",required=true) String uid, @RequestParam(value="id",required=true) String id,
@RequestParam(value="oriIdCardPath") String oriIdCardPath,
HttpServletRequest request){
ResultSupport result = new ResultSupport();
log.debug("原始文件名称:"+file.getName()+","+file.getOriginalFilename());
//max size 1048576
log.debug("图片大小"+file.getSize());
if (file.isEmpty()) {
result.setSuccess(false);
result.setResultMsg( "请选择文件身份证照片;");
return result;
}
String fileName = file.getOriginalFilename();
String prefix = fileName.substring(fileName.lastIndexOf("."));
fileName = System.currentTimeMillis()+Utils.getRandomString(8) + prefix;
int size = (int) file.getSize();
System.out.println(fileName + "-->" + size);
// String filePath ="/usr/mydata/uploadid/";
String filePath = request.getRealPath("/uploadid/");
File dest = new File(filePath + fileName);
if (!dest.getParentFile().exists()) { // 判断文件父目录是否存在
System.out.println("save exists");
dest.getParentFile().mkdir();
}
String errMsg="";
try {
file.transferTo(dest); // 保存文件
filePath="/uploadid/"+fileName;
//update database path
int count = service.updateIdCardById(filePath,id);
result.setResultMsg(filePath);
result.setSuccess(true);
//delete old file
if (null != oriIdCardPath && !"".equals(oriIdCardPath)) {
File oriFile = new File(oriIdCardPath);
if (oriFile.exists() && oriFile.isFile()) {
oriFile.delete();
}
}
return result;
} catch (IllegalStateException e) {
e.printStackTrace();
errMsg = "导入失败:" + e.getMessage();
} catch (IOException e) {
e.printStackTrace();
errMsg = "导入失败:" + e.getMessage();
}catch (Exception e) {
e.printStackTrace();
errMsg = "导入失败:" + e.getMessage();
}
result.setResultMsg( errMsg);
result.setSuccess(false);
return result;
}

推荐阅读

    opporeno8参数配置及价格

    opporeno8参数配置及价格,面部,亿元,Oppo的荣誉2020年1月4日,接近屏幕关闭传感器是否支持双卡:支持oppor11splus什么时候上市的Oppo R11S P

    魅蓝note6性能参数有哪些

    魅蓝note6性能参数有哪些,摄像头,蓝牙,魅蓝note6性能参数有哪些魅力蓝色Note6最好拍照。电池寿命更长。蓝色Note6使用高通 snapdragon 625

    设置总账参数|用友u8设置总账参数

    设置总账参数|用友u8设置总账参数,,1. 用友u8设置总账参数1、首先要点开数据权限控制设置;2、选择想要设置控制的单据;3、打开后看到左上角

    csgo参数设置|csgo怎么保存

    csgo参数设置|csgo怎么保存,,csgo怎么保存第一步下载csgo的官方版本。然后再下载一个5e对战平台,PS:5e的账号和csgo的账号不是一个账号。第

    移动apn设置|移动apn设置参数

    移动apn设置|移动apn设置参数,,移动apn设置参数1、打开手机系统设置界面应用,点击页面中的“移动网络”设置选项。2、进入移动网络设置页面

    确定java按钮响应事件的代码

    确定java按钮响应事件的代码,,* 阅读本文可以结合最后在java登录窗口界面下面是一个链接。 是定义的容器。 容器(CP =得到内容面板); / /

    均线最佳设置|均线最佳参数设置

    均线最佳设置|均线最佳参数设置,,1. 均线最佳参数设置所有指标包括kd macd均线,是根据已有价格计算得出,看指标落后于看价格分析,也就是k线。

    viv0nex参数配置|viv0x60参数

    viv0nex参数配置|viv0x60参数,,1. viv0nex参数配置运行内存:6GB机身容量:128GB电池类型:锂聚合物电池2. viv0x60参数没有15+256,所谓的15是内存