前台:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title lang="en">upload</title>
</head>
<body>
<form method="post" id="uploadForm" action="http://localhost:3005/api/uploadKyc" enctype="multipart/form-data">
<label for="upload">File (Binary):</label>
<input type="file" name="idCardFront" class="fileupload" /><br/>
<input type="file" name="idCardBack" class="fileupload" /><br/>
<input type="file" name="idCardhandheld" class="fileupload" /><br/>
<input type="file" name="swornVideo" class="fileupload" /><br/>
<input type="button" class="submit" value="Submit" οnclick="sendFormFromHTML(this.form);"/>
</form>
</body>
</html>
<script type="text/javascript">
function sendFormFromHTML(form) {
//form = $(".uploadForm").form;
var formData = new FormData(form);
formData.append('id', '123456'); // alternative to hidden fields
var xhr = new XMLHttpRequest();
xhr.open('POST', form.action, true);
xhr.onload = function(e) { alert(this.responseText) };
xhr.send(formData);
return false;
}
</script>
还用form表单提交会自动跳转页面,所以改为ajax上传:
<form id="uploadForm" enctype="multipart/form-data">
<label for="upload">File (Binary):</label>
<input type="file" name="idCardFront" id="idCardFront" /><br/>
<input type="file" name="idCardBack" id="idCardBack" /><br/>
<input type="file" name="idCardhandheld" id="idCardhandheld" /><br/>
<input type="file" name="swornVideo" id="swornVideo" /><br/>
<input type="button" value="submit" οnclick="sendFormFromHTML(this.form);"/>
</form>
</body>
</html>
<script type="text/javascript" src="lib/jquery.min.js"></script>
<script type="text/javascript">
function sendFormFromHTML(form) {
var formData = new FormData(form);
// formData.append('id', '123456'); // alternative to hidden fields
$.ajax({
url: "http://localhost:3005/api/uploadKyc",
type: "POST",
data: formData,
cache: false,
processData: false, // 告诉jQuery不要去处理发送的数据
contentType: false // 告诉jQuery不要去设置Content-Type请求头});
success: function(result){
alert(result.code);
alert(result.msg);
}
});
};
</script>
后台:
var form = new multiparty.Form();
form.parse(request.payload, function(err, fields, files) {
fs.readFile(files.idCardFront[0].path,function(err,data){
if(!data || err){return ryply({code:401,msg:"请上传身份证正面照片"});
}
var fileName = files.idCardFront[0].originalFilename;
var types = fileName.split('.'); //将文件名以.分隔,取得数组最后一项作为文件后缀名。
var picType = String(types[types.length-1]).toLocaleLowerCase();
if(picType=="jpg" || picType=="png" || picType=="jpeg"){
var date = new Date();
var ms = Date.parse(date); //计算当前时间与1970年1月1日午夜相差的毫秒数 赋值给ms以确保文件名无重复。
forntPath = appDir+"/kycFiles/front"+ ms +"." + String(types[types.length-1]);
fs.renameSync(files.idCardFront[0].path, forntPath);
}else{
return reply({code:411,msg:"身份证正面照片格式不正确"});
}
})
};