下面是详细讲解 Java 实现上传文件到服务器和客户端的完整攻略:
一、上传文件到服务器
1、准备工作
用 Java 上传文件到服务器,需要用到 commons-fileupload
和 commons-io
两个 Jar 包。这两个 Jar 包可以在 Maven 仓库中进行下载,下载方式详见如下链接:
- commons-fileupload:https://mvnrepository.com/artifact/commons-fileupload/commons-fileupload
- commons-io:https://mvnrepository.com/artifact/commons-io/commons-io
2、前端页面
前端页面需要创建一个表单来上传文件,代码如下:
<form action="/upload" method="post" enctype="multipart/form-data">
<input type="file" name="file"/>
<input type="submit" value="上传"/>
</form>
3、后端代码
后端需要实现一个上传文件的接口,将前端传过来的文件保存到服务器上。示例代码如下:
@PostMapping("/upload")
@ResponseBody
public String upload(@RequestParam("file") MultipartFile file) {
if (file.isEmpty()) {
return "上传文件不能为空";
}
// 获取上传文件名称
String fileName = file.getOriginalFilename();
// 设置上传文件保存的路径
String filePath = "D:/upload/";
// 检查保存路径是否存在,不存在则创建
File saveFile = new File(filePath);
if (!saveFile.exists()) {
saveFile.mkdirs();
}
try {
// 保存上传的文件到目标路径
file.transferTo(new File(filePath + fileName));
} catch (IOException e) {
e.printStackTrace();
return "上传失败,请稍后重试";
}
return "上传成功";
}
二、下载文件到客户端
1、前端页面
前端页面提供一个下载按钮,用于触发文件下载的操作。示例代码如下:
<a href="/download?fileName=test.txt">下载文件</a>
2、后端代码
后端需要处理文件下载的请求,将需要下载的文件以二进制流的形式传输到客户端。示例代码如下:
@GetMapping("/download")
public void download(HttpServletResponse response, @RequestParam("fileName") String fileName) {
// 获取要下载的文件路径
String filePath = "D:/upload/";
File file = new File(filePath + fileName);
if (file.exists()) {
try {
// 读取要下载的文件,保存到字节数组中
byte[] data = FileUtils.readFileToByteArray(file);
// 设置响应头信息
response.setContentType("application/octet-stream");
response.setHeader("Content-disposition", "attachment;filename=" + fileName);
// 写入响应流中
ServletOutputStream outputStream = response.getOutputStream();
outputStream.write(data);
outputStream.flush();
} catch (IOException e) {
e.printStackTrace();
}
}
}
以上就是 Java 实现上传文件到服务器和客户端的完整攻略,希望对你有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:java实现上传文件到服务器和客户端 - Python技术站