文件服务器的上传下载接口

该博客介绍了如何在Java中实现文件服务器的上传下载接口。通过创建OutputStream写入文件,组装FileMessageVO对象返回文件信息,包括文件名、路径、下载URI、大小和类型。同时,提供了一个getPrintSize方法,用于将字节转换为易读的大小单位(B, KB, MB, GB)。下载部分通过HttpServletResponse设置响应,根据浏览器类型设置编码格式。" 100678271,9007605,网站构建:提升形象与绘制结构图指南,"['网站开发', '前端开发', 'UI设计', '流程图绘制', '网页设计']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

// 写入指定文件夹

OutputStream out = new FileOutputStream(file);

out.write(bytes);

// 组装对象

fileMessageVO.setFileName(fileName);

fileMessageVO.setFileRoute(commonfile);

fileMessageVO.setFileDownloadUri(commonfile + fileName);

fileMessageVO.setSize(getPrintSize(file.length()));

fileMessageVO.setFileType(fileName.substring(fileName.lastIndexOf(“.”) + 1));

result.setData(fileMessageVO);

} catch (Exception e) {

e.printStackTrace();

}

return result;

}

public static String getPrintSize(long size) {

// 如果字节数少于1024,则直接以B为单位,否则先除于1024,后3位因太少无意义

if (size < 1024) {

return String.valueOf(size) + “B”;

} else {

size = size / 1024;

}

// 如果原字节数除于1024之后,少于1024,则可以直接以KB作为单位

// 因为还没有到达要使用另一个单位的时候

// 接下去以此类推

if (size < 1024) {

return String.valueOf(size) + “KB”;

} else {

size = size / 1024;

}

if (size < 1024) {

// 因为如果以MB为单位的话,要保留最后1位小数,

// 因此,把此数乘以100之后再取余

size = size * 100;

return String.valueOf((size / 100)) + “.” + String.valueOf((size % 100)) + “MB”;

} else {

// 否则如果要以GB为单位的,先除于1024再作同样的处理

size = size * 100 / 1024;

return String.valueOf((size / 100)) + “.” + String.valueOf((size % 100)) + “GB”;

}

}

}

实体类

public class FileMessage {

/**

  • 文件名称

*/

private String fileName;

/**

  • 文件路径

*/

private String file 《一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义》无偿开源 威信搜索公众号【编程进阶路】 Route;

/**

  • 下载地址

*/

private String fileDownloadUri;

/**

  • 文件类型

*/

private String fileType;

/**

  • 文件大小

*/

private String size;

}

2.下载


@RestController

public class FileDownload {

@Value(“${commonfile}”)

private String commonfile;

@GetMapping(“/download”)

public String downloadFile(FileMessage fileMessage) throws UnsupportedEncodingException {

// 获取HttpServletResponse

HttpServletResponse response =

((ServletRequestAttributes)RequestContextHolder.getRequestAttributes()).getResponse();

String fileName = fileMessage.getFileName();// 文件名

if (fileName != null) {

// 设置文件路径

File file = new File(commonfile + fileName);

if (file.exists()) {

RequestAttributes requsetAttributes = RequestContextHolder.currentRequestAttributes();

HttpServletRequest request = ((ServletRequestAttributes)requsetAttributes).getRequest();

// 获得浏览器代理信息

final String userAgent = request.getHeader(“USER-AGENT”);

// 判断浏览器代理并分别设置响应给浏览器的编码格式

if (StringUtils.contains(userAgent, “MSIE”) || StringUtils.contains(userAgent, “Trident”)) {

// IE浏览器

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值