Hao_RanYang 2019-11-07 10:35 采纳率: 0%
浏览 192

Java读写MySQL备份生成的文件返回给页面下载,页面下载到的是空文件,而MySQL备份的不是空文件

//数据备份
    @ResponseBody
    @GetMapping("/backups")
    @RequiresPermissions("system:data:backups")
    public void list(HttpServletResponse response) {
        //备份文件
        String filePath="C:\\beifen";//备份文件的路径
        String dbName="log_system233"+(new Date().getTime());//备份文件的名称
        try {
            Process process = Runtime.getRuntime().exec(
                    "cmd /c mysqldump -u root -proot " + "log_system233" + " > "
                            + filePath + "/" + dbName
                            + ".sql");
            //备份的数据库名字为log_system,数据库连接和密码均为root

        } catch (Exception e) {
            e.printStackTrace();
        }

        //下载备份的文件
        String filename = "C:\\beifen/";
        String filenameZip = filename + dbName + ".sql";//获取文件的路径
        try {
            response.setContentType("application/x-execl");
            response.setHeader("Content-Disposition",
                    "attachment;filename=" + new String((dbName+".sql").getBytes(), "UTF-8"));

            // 读取文件
            InputStream in = new FileInputStream(filenameZip);
            ServletOutputStream outputStream = response.getOutputStream();
            // 写文件
            int b;
            while ((b = in.read()) != -1) {
                outputStream.write(b);
            }
            in.close();
            outputStream.close();
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();

        }
        //结束
    }

这是页面下载的文件
图片说明

如果在程序程加上断点,那么页面下载的就不是空文件了;但不加断点的话,页面下载的就是空文件

  • 写回答

1条回答 默认 最新

  • 小_破孩 2019-11-07 17:35
    关注

    你是通过命令进行备份的 你的数据库还在备份 所以你获取到的可能就是一个空文件 你加上断点后数据库命令执行完了相当与你等待了 数据备份命令执行完了所以获取就不是空文件

    评论

报告相同问题?

悬赏问题

  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料