后端实习经历

后端实习经历

2021-07-22

springboot文件上传

下载:

先上代码

@GetMapping(path = "/files/{filename:.+}")
@ResponseBody
public ResponseEntity<Resource> serveFile(@PathVariable String filename) {
    // 根据文件名读取文件
    Resource file = storageService.loadAsResource(filename);
    // @ResponseBody 用于直接返回结果(自动装配)
    // ResponseEntity 可以定义返回的 HttpHeaders 和 HttpStatus (手动装配)
    // ResponseEntity.ok 相当于设置 HttpStatus.OK (200)
    // CONTENT_DISPOSITION 该 标志将通知浏览器启动下载
    System.out.print(filename);
    return ResponseEntity.ok().header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=\"" + file.getFilename() + "\"").body(file);
}

由于惯性思维,以为在url调用接口时{filename:.+}这部分也要原封不动的抄上去。经过师傅的提醒,发现这个位置写的是文件名。

然而,报错:404 not found ,而且这个错误没通过json或text表现出来,而是在postman上很小的一块地方标注,迷惑了我好久。

要解决这个问题,师父让我先在拿文件的代码处断点。也就是这一条。

Resource file = storageService.loadAsResource(filename);

再通过“ctrl+左键”一层层看是从哪里下载的文件,(虽然我还是没太理解),最后发现是在“dir_upload"中下载(好像是)。别以为发现这个就算完事了。不能先放文件再运行程序,否则程序运行时有一步会清空该文件夹。所以要在IDEA显示运行完后,已经有进程时,再放文件,然后在Postman中Get。

总之,这个degub的思路很重要。

上传

@PostMapping(value = "/upload", consumes = MediaType.MULTIPART_FORM_DATA_VALUE,
        produces = MediaType.APPLICATION_JSON_VALUE)
public String upload(MultipartFile file1) {
    if (file1 == null) {
        return null;
    }
    String fileName = file1.getOriginalFilename();
    System.out.println("文件名:" + fileName);
    String filePath = "/opt/niuyuanzhuo";
    File dest = new File(filePath, fileName);
    try {
        file1.transferTo(dest);
        System.out.println("上传成功!");
    } catch (IOException e) {
        e.printStackTrace();
        return "error";
    }
    return "succeess";
}

这串代码的雏形是csdn上某网站抄的,但是有几处不够严谨。

  • 没写consumes = MediaType.MULTIPART_FORM_DATA_VALUE, produces = MediaType.APPLICATION_JSON_VALUE,导致postan上输入输出格式不好。

  • File dest = new File(filePath, fileName);原来的“,”是加号,“ctrl+左键”点进去后才发现要逗号。

  • 异常处理时,要e.printStackTrace();,否则不知道哪里错了。

  • 上传地址要这样写:String filePath = "/opt/niuyuanzhuo";。

今天学的小技巧

  • 在构建jar包时,输入jar包名,可以通过“tab"键一步输出。

  • 若是java -jar jar包名线上运行jar包,可以通过“ctrl+C"退出进程。

  • 要看代码哪里出问题,例外报错“error"屁用没有,要打印日志,方式下面链接有。

更加详细的点击链接。

https://blog.csdn.net/wx1528159409/article/details/90608525?ops_request_misc=%257B%2522request%255Fid%2522%253A%252216269347%207716780265477554%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=162693477716780265477554&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduend~default-1-90608525.first_rank_v2_pc_rank_v29&utm_term=nohup%E8%BF%90%E8%A1%8Cjar%E5%8C%85&spm=1018.2226.3001.4187

socket构造服务端和客户端,完成数据通信与端的退出

之后,师父让我完成用socket构造服务端和客户端,完成数据通信与端的退出。

还好我很快找到了能满足要求并能大概看懂的代码。代码如下。

https://blog.csdn.net/u014209205/article/details/80461122?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522162696418316780255275715%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=162696418316780255275715&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduend~default-1-80461122.first_rank_v2_pc_rank_v29&utm_term=java+socket&spm=1018.2226.3001.4187

先运行server,让服务端已知跑着,再运行客户端,客户端自己关闭,完成信息交互,可以再日志上查看。

师父听完我对代码的讲解后,要求我能在公司ip地址上构建服务器。

之前做的都是http协议上的,是服务层,要写接口 socket走tcp协议,更加原始,不用接口

但是两者都要启动类。网站上没找到socket的启动类,因为他只实现了在本地能触及的ip地址上构建服务端和客户端。

所以我现在大概的思路是在此基础上写启动类,方便我线上运行。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
作为一名人工智能语言模型,我无法拥有实习经历。但是,我可以告诉你一些后端专业实习经历的例子。 1. 开发和维护后端系统 一个后端工程师的主要任务是开发和维护系统的后端部分。实习生可能需要参与系统设计、编码和测试等方面的工作。他们需要使用编程语言和框架来实现后端逻辑,如Python、Java、Ruby、Node.js和Django等。 2. 数据库管理 后端工程师通常需要管理和维护数据库。实习生可能需要协助设计和维护数据库,如MySQL和PostgreSQL等。他们需要确保数据库中的数据被安全地存储和访问,并能够有效地检索和更新数据。 3. API开发 后端工程师可能需要设计和实现API(应用程序接口)以供前端或其他应用程序使用。实习生可能需要参与API的设计和实现,并确保API与其他系统的兼容性。 4. 服务器管理 后端工程师需要管理和维护服务器,以确保系统的稳定性和可靠性。实习生可能需要协助管理服务器,如配置和监控服务器性能等。 5. 安全性和性能优化 后端工程师需要确保系统的安全性和性能。实习生可能需要参与安全性和性能优化方面的工作,如确保系统的数据被安全地存储和访问,并优化系统的性能以提高响应速度和资源利用率。 总之,后端工程师的实习经历可能涉及系统设计、编码和测试、数据库管理、API开发、服务器管理、安全性和性能优化等方面的工作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值