JAVA操作——获取文件扩展名,去掉文件扩展名

昨天收邮件,得知要参加一个产品部的会议,猜想,也许是因为我做的这个产品demo问题。于是昨天忙活到凌晨3点半,结果早上一来才知道又被调戏了。发邮件的MM把邮件误发给我了。悲催啊有木有,困啊有木有!自己还是太连清了。。。

不过昨天鼓捣了半天有关文件的操作,获取文件扩展名,去掉文件扩展名等。现在发上来,大家共同学习。写的不好请拍砖。

/* * Java文件操作 获取文件扩展名 * * Created on: 2011-8-2 * Author: blueeagle */ public static String getExtensionName(String filename) { if ((filename != null) && (filename.length() > 0)) { int dot = filename.lastIndexOf('.'); if ((dot >-1) && (dot < (filename.length() - 1))) { return filename.substring(dot + 1); } } return filename; } /* * Java文件操作 获取不带扩展名的文件名 * * Created on: 2011-8-2 * Author: blueeagle */ public static String getFileNameNoEx(String filename) { if ((filename != null) && (filename.length() > 0)) { int dot = filename.lastIndexOf('.'); if ((dot >-1) && (dot < (filename.length()))) { return filename.substring(0, dot); } } return filename; }


这里主要用到两个函数:lastIndexOf(string)以及substring(int,int).

### Java 后端文件上传漏洞修复方法 #### 权限控制 为了确保安全性,在网站中存在上传模块时,必须实施严格的权限认证机制。这意呸着只有经过身份验证并授权的用户能够访问使用这些功能[^1]。 #### 禁止脚本执行 针对服务器上的文件上传目录,应配置Web服务器(例如Apache),使其拒绝解释任何可能作为恶意代码载体的特定类型的文件,比如PHP脚本。具体可以通过调整HTTPD配置来阻止`.php`及其变体形式的请求被执行: ```apache <FilesMatch "\.(php|php3?|phtml)$"> Require all denied </FilesMatch> ``` 此段配置使得即便攻击者设法上传了含有潜在危险指令的PHP文件,也无法使它们生效,从而提高了系统的整体安全性[^4]。 #### 白名单过滤 采用基于白名单的方式限定允许上传的内容类型,仅接受已知安全且必要的媒体格式,如图像文件(`.jpg`, `.png`)等。对于不符合条件的数据一律拒收,并向用户提供清晰提示说明哪些扩展名是可以接收的。此外,还需进一步确认提交过来的实际MIME-Type是否匹配声明中的内容类型,防止利用工具篡改表单字段企图规避检查的行为发生。 #### 文件重命名与路径随机化 为了避免因客户端提供的原始名称而引入风险,建议在接受到新资源之后立即为其分配独一无二的新名字——通常是由系统自动生成的一串字符构成;同时将其存放在相对隐蔽的位置而非公开暴露于根目录之下。这样做不仅有助于减少被猜测到确切位置的可能性,也便于后续管理维护工作开展[^3]。 #### 输入验证与清理 无论何时都不可轻信来自外部未经审查的信息源。因此,在处理任何形式的数据之前都要先做充分的预处理操作,包括但不限于去除多余空白符、转义特殊符号以及检测是否存在非法模式等方面。特别是当涉及到数据库交互环节时更应该格外小心谨慎,优先选用参数化的SQL语句或是成熟的对象关系映射库来进行持久层编程实践,以此杜绝SQL注入隐患的存在[^2]。 #### 日志记录与监控报警 建立健全的日志体系用于追踪每一次上传活动的具体情况,一旦发现可疑迹象便及时发出警告通知相关人员介入调查处置。定期回顾历史记录也有助于总结经验教训进而优化现有防御策略达到持续改进的目的。 ```java // 示例:日志记录部分逻辑片段 try { // ... 处理文件上传业务... } catch (Exception e) { logger.error("File upload failed", e); } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值