前言:
项目中时常会遇到文件上传功能,针对这一功能做一个笔记,以便于自己回顾,写的不好请谅解!!!!
*注:此处只有上传和删除功能,如果要在上传后在线预览PDF请参考另一篇博客:
前端代码:
上传插件用的是layui的文件上传插件。
html:
<form class="layui-form" method="post" action="">
<div class="layui-form-item">
<label class="layui-form-label">用户名</label>
<div class="layui-input-block">
<input type="text" id="username" name="username" required lay-verify="required" placeholder="请输入用户名" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">上传(pdf)</label>
<div class="layui-input-block">
<button type="button" class="layui-btn" id="up">
<i class="layui-icon"></i>上传文件
</button>
<input type="text" id="filename" name="filename" required lay-verify="required" readonly="readonly" value="">
<button type="button" class="layui-btn" id="delfile" onclick="delFile();">删除</button>
</div>
</div>
<div class="layui-form-item">
<div class="layui-input-block">
<button class="layui-btn" lay-submit lay-filter="formDemo">立即提交</button>
<button type="reset" class="layui-btn layui-btn-primary">重置</button>
</div>
</div>
</form>js:
<script>
layui.use('upload', function(){
var upload = layui.upload;
//执行实例
var uploadInst = upload.render({
elem: '#up' //绑定元素
,url: '/uploadFile.json' //上传接口
,accept: 'file' //指定允许上传时校验的文件类型,可选值有:images(图片)、file(所有文件)、video(视频)、audio(音频)
,exts: 'pdf' //指定后缀名 更多参数请到这里https://www.layui.com/doc/modules/upload.html
,done: function(res){
if (res.status==0){
alert(res.message);
}
//上传后的文件名回显到input框
document.getElementById("filename").value=res.data;
}
,error: function(){
//请求异常回调
}
});
});
delFile = function (){
var filename = $("#filename").val();
if (filename=="") {
alert("还未上传文件!")
} else{
if(confirm("确实要删除吗?")){
$.ajax({
type:"POST",
url:"/delFile.json",
data:{filename:$("#filename").val()},
dataType:"json",
success:function (res) {
if (res.status==0) {
alert(res.message);
$("#filename").val("");
}else{
alert(res.message)
}
}
});
}
}
}
</script>后端代码:
Java:
@RequestMapping("/uploadFile.json")
@ResponseBody
public Result uploadFile(@RequestParam("file") MultipartFile file){
if (file.isEmpty()){
return Result.fail("文件为空!");
}
//获取文件名
String originalFilename = file.getOriginalFilename();
//新文件名 时间戳+文件名
String filename = System.currentTimeMillis()+"_"+originalFilename;
//获取路径
String path = getPath();
//创建新的文件
File fileMkdir = new File(path+"\\"+filename);
if (!fileMkdir.exists()){
fileMkdir.mkdir();
}
try {
//写入文件
file.transferTo(fileMkdir);
Map<String,String> data = new HashMap<>();
return Result.success("上传成功!",filename);
} catch (IOException e) {
e.printStackTrace();
return Result.fail("上传失败!");
}
}
/**
* 删除文件
*/
@RequestMapping("/delFile.json")
@ResponseBody
public Result delFile(@RequestParam("filename") String filename){
Result result = deleteFileByName(filename);
return result;
}
private Result deleteFileByName(String filename) {
String path = getPath();
File file = new File(path);
if (!file.exists()){
return Result.fail("该文件不存在!");
}
if (file.isFile()){
return Result.fail("该文件是目录!");
}else {
File[] files = file.listFiles();
for (File f: files) {
if (filename.equals(f.getName())){
f.delete();
return Result.success("删除成功!",null);
}
}
}
return Result.fail("该文件不存在!");
}
/**
* 获取存储路径
*/
private String getPath(){
//获取当前项目路径
String c = System.getProperty("user.dir");
//设置文件存储路径
return c+"\\src\\main\\resources\\file"+"\\";
}演示效果:

添加后结果:

版权声明:本文为aa821198112原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。