Ruoyi实现单文件上传和多文件打包压缩包下载

该博客详细介绍了如何使用Ruoyi框架实现单文件上传和多文件打包成压缩包进行下载。在单文件上传中,涉及HTML、JS、Controller以及框架内的FileUploadUtils组件。在多文件打包下载部分,除了前端和控制器,还提到了配置文件的设置。文章还提及了集合判断为空的方法,提供了两种检查方式。
摘要由CSDN通过智能技术生成

目录

单文件上传篇

1、html

2、JS

3、Controller

3.1 Global.getProfile()  

3.3.1 JarBasePath.getBaseJarPathStr() 

3.2  FileUploadUtils.upload(filePath, file)   --ruoyi框架自带的

4、Service 和 Xml 就不写了 没什么价值

多文件打包下载压缩包篇

 1、html

2、JS

3、Controller

4、Config --配置文件上传下载本地位置的(搞得我也是昏头转向的)

5、Service 和 xml 就不写了,没什么价值


单文件上传篇

1、html

<!--    注意,这个文件的上传和下载功能一定要放在一个form里方便处理-->
    <form class="form-horizontal m" id="form-checkCarPhoto-show" th:object="${CarPhoto}">
      <input id="id" name="id" th:field="*{id}"  type="hidden">
<!--      单文件上传按钮-->
      <input id="filePath" name="filePath" class="form-control" type="file">
      <a class="btn btn-success btn-xs " href="#" onclick="uploadFile()"><i class="fa fa-edit"></i>单文件上传</a>
<!--      多文件打包下载按钮-->
      <a class="btn btn-success btn-xs " href="#" onclick="downloadFile($('#id').val())"><i class="fa fa-edit"></i>全部下载</a>
    </form>

2、JS

 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/"+$('#id').val() ,  //controller文件映射,依据自己定义的写
      type: 'post',
      cache: false,
      data: formData,
      processData: false,     //Jquery是否会序列化数据
      //contentType:发送信息至服务器时内容编码类型(告诉服务器从浏览器提交过来的数据格式)
      // 默认值为contentType = "application/x-www-form-urlencoded"
      // 在 ajax 中 contentType 设置为 false 是为了避免 JQuery 对其操作,从而失去分界符,而使服务器不能正常解析文件。
      contentType: false,
      dataType: "json",
      success: function(result) {
        $.operate.successCallback(result);
      }
    });
  }

3、Controller

	@PostMapping("/add/{cid}")
	@ResponseBody
	public AjaxResult addSave(@PathVariable("cid") Integer cid, @RequestParam("file") MultipartFile file, FileInfo fileInfo) throws IOException
	{
		// 上传文件路径
		String filePath = Global.getProfile() + "check/";
		// 上传并返回新文件名称
		String fileName = FileUploadUtils.upload(filePath, file);
		CarPhoto carPhoto = new CarPhoto();
		carPhoto.setPhotoUrl(fileName);
		carPhoto.setCheckId(cid);
		// 插入数据并返回结果至前端
		return toAjax(carPhotoService.insertCarPhoto(carPhoto));
	}

3.1 Global.getProfile()  

package com.bloodmanage.common.config;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.UnsupportedEncodingException;
import java.util.HashMap;
import java.util.Map;

import com.bloodmanage.common.utils.http.JarBasePath;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.bloodmanage.common.utils.StringUtils;
import com.bloodmanage.common.utils.YamlUtil;

/**
 * 全局配置类
 * 
 * @author songzihao
 */
public class Global
{
    private static final Logger log = LoggerFactory.getLogger(Global.class);
    private static JarBasePath jarBasePath = new JarBasePath();

    private static String NAME = "application.yml";

    /**
     * 当前对象实例
     */
    private static Global global = null;

    /**
     * 保存全局属性值
     */
    private static Map<String, String> map = new HashMap<String, String>();

    private Global()
    {
    }

    /**
     * 静态工厂方法 获取当前对象实例 多线程安全单例模式(使用双重同步锁)
     */

    public static synchronized Global getInstance()
    {
        if (global == null)
        {
            synchronized (Global.class)
            {
                if (global == null)
                    global = new Global();
            }
        }
   
  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
RuoYi 框架中实现文件下载可以通过以下步骤进行: 1. 在控制器中定义一个方法来处理文件下载请求。可以使用`@RequestMapping`或`@GetMapping`等注解来匹配请求的URL。 2. 创建一个`File`对象,指定要下载文件的路径。 3. 使用`InputStreamResource`将文件包装成输入流的形式。 4. 设置响应的内容类型和头信息,以告知浏览器下载文件。 5. 将文件输入流写入响应的输出流中,完成文件下载。 下面是一个简的示例代码: ```java @Controller @RequestMapping("/file") public class FileController { @GetMapping("/download") public ResponseEntity<InputStreamResource> downloadFile() throws IOException { String filePath = "/path/to/your/file"; // 替换为实际的文件路径 File file = new File(filePath); HttpHeaders headers = new HttpHeaders(); headers.add("Content-Disposition", "attachment; filename=" + file.getName()); InputStreamResource resource = new InputStreamResource(new FileInputStream(file)); return ResponseEntity.ok() .headers(headers) .contentType(MediaType.APPLICATION_OCTET_STREAM) .body(resource); } } ``` 在上述示例中,我们使用`File`类来指定要下载文件路径,然后创建一个`InputStreamResource`来将文件包装成输入流形式。接下来,我们设置响应的内容类型为`application/octet-stream`,并设置响应头信息中的`Content-Disposition`来告知浏览器下载文件。最后,将文件输入流写入响应的输出流中,返回`ResponseEntity`对象。 记得替换示例代码中的文件路径为你实际的文件路径。当访问`/file/download`时,就会触发文件下载操作。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值