上传下载

首先创建一张上传文件的表,例如:

  1. drop table if exists sys_file_info;
  2. create table sys_file_info (
  3. file_id int(11) not null auto_increment comment '文件id',
  4. file_name varchar(50) default '' comment '文件名称',
  5. file_path varchar(255) default '' comment '文件路径',
  6. primary key (file_id)
  7. ) engine=innodb auto_increment=1 default charset=utf8 comment = '文件信息表';

上传实现流程

1、代码生成sys_file_info表相关代码并覆盖到对应目录。

2、参考示例修改代码。

  1. <input id="filePath" name="filePath" class="form-control" type="file">
  1. function submitHandler() {
  2. if ($.validate.form()) {
  3. uploadFile();
  4. }
  5. }
  6. function uploadFile() {
  7. var formData = new FormData();
  8. if ($('#filePath')[0].files[0] == null) {
  9. $.modal.alertWarning("请先选择文件路径");
  10. return false;
  11. }
  12. formData.append('fileName', $("#fileName").val());
  13. formData.append('file', $('#filePath')[0].files[0]);
  14. $.ajax({
  15. url: prefix + "/add",
  16. type: 'post',
  17. cache: false,
  18. data: formData,
  19. processData: false,
  20. contentType: false,
  21. dataType: "json",
  22. success: function(result) {
  23. $.operate.successCallback(result);
  24. }
  25. });
  26. }

3、在FileInfoController添加对应上传方法

  1. @PostMapping("/add")
  2. @ResponseBody
  3. public AjaxResult addSave(@RequestParam("file") MultipartFile file, FileInfo fileInfo) throws IOException
  4. {
  5. // 上传文件路径
  6. String filePath = RuoYiConfig.getUploadPath();
  7. // 上传并返回新文件名称
  8. String fileName = FileUploadUtils.upload(filePath, file);
  9. fileInfo.setFilePath(fileName);
  10. return toAjax(fileInfoService.insertFileInfo(fileInfo));
  11. }

4、上传成功后需要预览可以对该属性格式化处理

  1. {
  2. field : 'filePath',
  3. title: '文件预览',
  4. formatter: function(value, row, index) {
  5. return '<a href="javascript:downloadFile(' + row.fileId + ')"><img style="width:30;height:30px;" src="/profile/upload/' + row.filePath + '"/></a>';
  6. }
  7. },

如需对文件格式控制,设置application.yml中的multipart属性

  1. # 文件上传
  2. servlet:
  3. multipart:
  4. # 单个文件大小
  5. max-file-size: 10MB
  6. # 设置总上传的文件大小
  7. max-request-size: 20MB

注意:如果只是单纯的上传一张图片没有其他参数可以使用通用方法 /common/upload请求处理方法 com.ruoyi.web.controller.common.CommonController

下载实现流程

1、参考示例代码。

  1. function downloadFile(fileId){
  2. window.location.href = ctx + "system/fileInfo/downloadFile/" + fileId;
  3. }

2、在Controller添加对应上传方法

  1. @GetMapping("/downloadFile/{fileId}")
  2. public void downloadFile(@PathVariable("fileId") Integer fileId, HttpServletResponse response,
  3. HttpServletRequest request) throws Exception
  4. {
  5. FileInfo sysFile = fileInfoService.selectFileInfoById(fileId);
  6. String filePath = sysFile.getFilePath();
  7. String realFileName = sysFile.getFileName() + filePath.substring(filePath.indexOf("."));
  8. String path = RuoYiConfig.getUploadPath() + sysFile.getFilePath();
  9. response.setCharacterEncoding("utf-8");
  10. response.setContentType("multipart/form-data");
  11. response.setHeader("Content-Disposition",
  12. "attachment;fileName=" + FileUtils.setFileDownloadHeader(request, realFileName));
  13. FileUtils.writeBytes(path, response.getOutputStream());
  14. }