[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"article-public-eji2Bt8v":3,"public-project-articles-eji2Bt8v":17},{"id":4,"uuid":5,"project_id":6,"title":7,"content":8,"type":9,"status":10,"public_enabled":10,"views":11,"sort":12,"created_at":13,"updated_at":14,"project_title":15,"project_slug":16},29,"eji2Bt8v",26,"12. 开发文件上传下载功能","\n# 文件上传\n\nprivate static final String ROOT_PATH = System.getProperty(\"user.dir\") + \"\u002Ffiles\";\n\n```java\n@PostMapping(\"\u002Fupload\")\npublic Result upload(MultipartFile file) throws IOException {\n    String originalFilename = file.getOriginalFilename();  \u002F\u002F 获取到原始的文件名   aaa.png   aaa.png\n    long flag = System.currentTimeMillis();  \u002F\u002F 唯一标识\n    String fileName = flag + \"_\" + originalFilename;    \u002F\u002F  1561231313132_aaa.png\n\n    File finalFile = new File(ROOT_PATH + \"\u002F\" + fileName);  \u002F\u002F 最终存到磁盘的文件对象\n    if (!finalFile.getParentFile().exists()) {  \u002F\u002F 如果父级目录不存在 就得创建\n        finalFile.getParentFile().mkdirs();\n    }\n    file.transferTo(finalFile);\n    \u002F\u002F 返回文件的url\n    String url = \"http:\u002F\u002Flocalhost:9090\u002Ffiles\u002Fdownload?fileName=\" + fileName;\n    return Result.success();\n}\n```\n\n# 文件下载\n\n```java\n@GetMapping(\"\u002Fdownload\")\npublic void download(String fileName, HttpServletResponse response) throws IOException {\n    File file = new File(ROOT_PATH + \"\u002F\" + fileName);  \u002F\u002F 文件在存盘存储的对象\n    ServletOutputStream os = response.getOutputStream();\n    response.setHeader(\"Content-Disposition\", \"attachment;filename=\" + URLEncoder.encode(fileName, \"UTF-8\"));\n    response.setContentType(\"application\u002Foctet-stream\");\n\u002F\u002F        os.write(FileUtil.readBytes(file));\n    FileUtil.writeToStream(file, os);\n    os.flush();\n    os.close();\n}\n```\n\nPostman 调用\n![image.png](https:\u002F\u002Fcdn.nlark.com\u002Fyuque\u002F0\u002F2023\u002Fpng\u002F751015\u002F1700574963628-91085dc1-f829-471f-9ae7-b3b4c7555662.png#averageHue=%23fcf9f8&clientId=ub3550b78-983a-4&from=paste&height=581&id=ue35c40cf&originHeight=726&originWidth=1162&originalType=binary&ratio=1.25&rotation=0&showTitle=false&size=76417&status=done&style=none&taskId=u4a29e523-337c-4f49-8e28-827f123ad48&title=&width=929.6)\n","coding",1,914,30,"2024-04-16 02:36:07","2026-05-03 22:49:02","SpringBoot+Vue3的学生成绩管理系统","student-performance",{"project":18,"items":19},{"id":6,"title":15,"slug":16},[20,27,33,39,45,51,57,63,68,74,80,85,86,92,98,104],{"id":21,"uuid":22,"project_id":6,"title":23,"type":9,"status":10,"public_enabled":10,"views":24,"sort":25,"created_at":26,"updated_at":14,"project_title":15,"project_slug":16},18,"7r0zrxqF","01. 学生成绩管理系统介绍",3753,19,"2025-01-09 10:22:30",{"id":25,"uuid":28,"project_id":6,"title":29,"type":9,"status":10,"public_enabled":10,"views":30,"sort":31,"created_at":32,"updated_at":14,"project_title":15,"project_slug":16},"h5U5WN1A","02. 脚手架介绍",3957,20,"2025-01-09 10:22:49",{"id":31,"uuid":34,"project_id":6,"title":35,"type":9,"status":10,"public_enabled":10,"views":36,"sort":37,"created_at":38,"updated_at":14,"project_title":15,"project_slug":16},"aKzqZqzY","03. 实现登录功能",3607,21,"2024-04-16 02:36:48",{"id":37,"uuid":40,"project_id":6,"title":41,"type":9,"status":10,"public_enabled":10,"views":42,"sort":43,"created_at":44,"updated_at":14,"project_title":15,"project_slug":16},"xve1cq5m","04. 开发课程管理页面",1907,22,"2024-04-16 02:36:40",{"id":43,"uuid":46,"project_id":6,"title":47,"type":9,"status":10,"public_enabled":10,"views":48,"sort":49,"created_at":50,"updated_at":14,"project_title":15,"project_slug":16},"KUfmmtjB","05. 开发课程分页查询接口",1303,23,"2024-04-16 02:36:36",{"id":49,"uuid":52,"project_id":6,"title":53,"type":9,"status":10,"public_enabled":10,"views":54,"sort":55,"created_at":56,"updated_at":14,"project_title":15,"project_slug":16},"5aLIaQCP","06. 开发课程前后台数据对接",1040,24,"2024-04-16 02:36:32",{"id":55,"uuid":58,"project_id":6,"title":59,"type":9,"status":10,"public_enabled":10,"views":60,"sort":61,"created_at":62,"updated_at":14,"project_title":15,"project_slug":16},"dTwkIyqR","07. 开发课程新增和编辑功能",990,25,"2024-04-16 02:36:27",{"id":61,"uuid":64,"project_id":6,"title":65,"type":9,"status":10,"public_enabled":10,"views":66,"sort":6,"created_at":67,"updated_at":14,"project_title":15,"project_slug":16},"NlyNo5n8","08. 开发课程管理删除功能",666,"2024-04-16 02:36:23",{"id":6,"uuid":69,"project_id":6,"title":70,"type":9,"status":10,"public_enabled":10,"views":71,"sort":72,"created_at":73,"updated_at":14,"project_title":15,"project_slug":16},"dDLZGpA4","09. 开发学生登录功能",1019,27,"2024-04-16 02:36:20",{"id":72,"uuid":75,"project_id":6,"title":76,"type":9,"status":10,"public_enabled":10,"views":77,"sort":78,"created_at":79,"updated_at":14,"project_title":15,"project_slug":16},"5qCBv54l","10. 开发学生注册功能",811,28,"2024-04-16 02:36:15",{"id":78,"uuid":81,"project_id":6,"title":82,"type":9,"status":10,"public_enabled":10,"views":83,"sort":4,"created_at":84,"updated_at":14,"project_title":15,"project_slug":16},"smeYDA8N","11. 开发学生管理功能",1060,"2024-04-16 02:36:10",{"id":4,"uuid":5,"project_id":6,"title":7,"type":9,"status":10,"public_enabled":10,"views":11,"sort":12,"created_at":13,"updated_at":14,"project_title":15,"project_slug":16},{"id":12,"uuid":87,"project_id":6,"title":88,"type":9,"status":10,"public_enabled":10,"views":89,"sort":90,"created_at":91,"updated_at":14,"project_title":15,"project_slug":16},"BkumMnOk","13. 开发个人资料功能",980,31,"2024-04-16 02:36:03",{"id":90,"uuid":93,"project_id":6,"title":94,"type":9,"status":10,"public_enabled":10,"views":95,"sort":96,"created_at":97,"updated_at":14,"project_title":15,"project_slug":16},"C7ux2BRH","14. 开发学生选课功能",1221,32,"2024-04-16 02:35:58",{"id":96,"uuid":99,"project_id":6,"title":100,"type":9,"status":10,"public_enabled":10,"views":101,"sort":102,"created_at":103,"updated_at":14,"project_title":15,"project_slug":16},"fLHT6xiE","15. 开发成绩管理功能",1253,33,"2024-04-16 02:35:54",{"id":105,"uuid":106,"project_id":6,"title":107,"type":9,"status":10,"public_enabled":10,"views":108,"sort":109,"created_at":110,"updated_at":111,"project_title":15,"project_slug":16},56,"k3gvEqlV","基于SpringBoot+Vue3的学生成绩管理系统资料汇总",355,100,"2024-12-26 16:23:07","2026-05-07 15:36:12.649662+00"]