基于若依框架(RuoYi-master)实现的的⽂件上传功能
注:在开发时,发现官⽅⽂档【上传下载】功能编写的不太准确,因⽽在此写篇⽂章以防⽇后以及看到的⼩伙伴们踩坑具体步骤如下:
1、⾸先创建⼀张上传⽂件的表,例如:
drop table if exists sys_file_info;
create table sys_file_info (
file_id          int(11)          not null auto_increment      comment '⽂件id',
file_name        varchar(50)      default ''                    comment '⽂件名称',
file_path        varchar(255)    default ''                    comment '⽂件路径',
primary key (file_id)
)engine=innodb auto_increment=1 default charset=utf8 comment ='⽂件信息表';
2、代码⽣成sys_file_info表相关代码并复制到对应⽬录。
代码⽣成以及对应⽬录的存放可参考之前博客:
3、参考如下修改⽣成的对应代码。
html:
注:在官⽅⽂档的基础上,添加了id=fileName,否则【⽂件名称】字段名会赋不上值
<input id="fileName"name="fileName"class="form-control"type="text">
<input id="filePath"name="filePath"class="form-control"type="file">
js:
注:与官⽅⽂档⼀致
function submitHandler(){
if($.validate.form()){
uploadFile();
}
}
function uploadFile(){
var formData = new FormData();
if($('#filePath')[0].files[0]== null){
$.modal.alertWarning("请先选择⽂件路径");
return false;
}
formData.append('fileName', $("#fileName").val());
formData.append('file', $('#filePath')[0].files[0]);
$.ajax({
url: prefix + "/add",
type: 'post',
cache: false,
data: formData,
processData: false,
contentType: false,
dataType: "json",
success: function(result){
$.operate.successCallback(result);
}
});
}
SysFileInfoController:
注:添加了@RequestParam(“fileName”) String fileName⽤来传递前端视图传递开的fileName值并通过setFileName⽅法给实体赋值getsavefilename
@PostMapping("/addsave")
@ResponseBody
public AjaxResult addSave(@RequestParam("file") MultipartFile file,@RequestParam("fileName") String fileName, SysFileInfo fileInfo) throws IOExceptio n
{
// 上传⽂件路径
String filePath = UploadPath();
// 上传并返回新⽂件名称
String fileNewName = FileUploadUtils.upload(filePath, file);
fileInfo.setFileName(fileName);
fileInfo.setFilePath(fileNewName);
return toAjax(sysFileInfoService.insertSysFileInfo(fileInfo));
}
4、最终实现效果:
5、上传成功后需要预览可以对该属性格式化处理
js
注:添加到info.html对应的代码中
{
field :'filePath',
title: '⽂件预览',
formatter: function(value, row, index){
return $.table.imageView(value);
}
},
6、最终效果

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。