用js异步提交json数据的方式写一个上传文件的功能
HTML代码
<div class="form-group">
<label class="col-md-2 control-label">上传文件:</label>
<div class="col-md-8">
<input type="file" onchange="getFile(this)">
</div>
js代码
function getFile(thisObj) {
//获取文件详细内容(路径等)
var file = thisObj.files[0];
var fileName = file.name;
//查询文件名的后缀
var suffixName = fileName.substring(fileName.lastIndexOf(".")+1);
//判断文件格式是否满足要求
if (suffixName.toLowerCase() !='apk'){
alert.msg("上传文件格式不正确!");
return;
}
//loading层
var index = layer.load(1, {
shade: [0.1,'#fff'] //0.1透明度的白色背景
});
var formData = new FormData();
formData .append("file", file);
$.ajax({
url: './importFile' ,
type: 'POST',
data: formData,
cache: false,
contentType: false,
processData: false,
success: function (data) {
alert("上传保存成功")
$("#updateUrl").val(data.path);
},
error: function (data) {
console.log(data);
alert("上传文件失败")
}
});
//手动关闭loading层
layer.close(index);
}
controller层方法
/**
*
* @param multipartfile
* @return
* @throws IOException
*/
@RequestMapping(value = "/importFile")
@ResponseBody
public Object idIdentification(@RequestParam("file") MultipartFile multipartfile) throws IOException {
Map<String,Object> map = new HashMap();
//返回文件路径(saveAttachment为封装过后的方法调用)
String filePath = FileUtil.saveAttachment(multipartfile);
//将路径放入map中
map.put("path",filePath);
return map;
}
saveAttachment封装的方法
/**
* 文件存储 完整路径({user.home}/pfxm/attach/XXX.XX)<== http://domain/attach/file/XXX.xx
* @param file
* @return 返回相对路径(attach/file/xxx.xx)
*/
public static String saveAttachment(MultipartFile file) {
String path = Constant.UPLOAD_PATH + Constant.ATTACHMENT_FILE_NAME;
String saveName = System.currentTimeMillis() + "." + getFileSuffix(file.getOriginalFilename(), Constant.TYPE_FILE_SUFFIX);
logger.debug(" --- 文件保存路径:{}, 文件保存名称:{} --- ", path, saveName);
// 保存
try {
// 保存文件
File targetFile = new File(path);
if (!targetFile.exists()) {
targetFile.mkdirs();
}
file.transferTo(new File(path + "/" + saveName));
} catch (Exception e) {
e.printStackTrace();
logger.debug(" --- 文件保存异常:{} --- " + e.getMessage());
return null;
}
return Constant.VIRTUAL_ATTACHMENT_FILE_PATH + "/" + saveName;
}
本人项目笔记,如若看不懂还请查询其他资料