Ruby中无需解压Zip文件检查路径长度超限的方法
不解压Zip文件检查内部文件路径长度(Ruby实现)
完全可以在不解压Zip文件的前提下完成路径长度检查,用Ruby的rubyzip库就能直接读取Zip内部的文件条目元数据,无需提取文件内容。
实现步骤:
- 先安装rubyzip库:
gem install rubyzip
- 编写检查逻辑代码:
require 'zip' def check_zip_path_length(zip_file_path, max_allowed_length) Zip::File.open(zip_file_path) do |zip| zip.each do |entry| # 获取Zip内文件的相对路径 internal_path = entry.name current_length = internal_path.length if current_length > max_allowed_length puts "⚠️ 路径过长: #{internal_path} (当前长度: #{current_length},限制: #{max_allowed_length})" else puts "✅ 路径合规: #{internal_path} (当前长度: #{current_length})" end end end end # 调用示例:检查example.zip内所有文件路径,限制长度255 check_zip_path_length('example.zip', 255)
关键说明:
Zip::File.open会直接打开Zip文件并读取内部目录结构,不会解压到本地entry.name返回的是文件在Zip包内的完整相对路径,和你用Dir.glob遍历本地文件夹得到的路径格式逻辑一致- 如果需要计算本地解压后的完整路径长度,可以把你的根路径和
entry.name拼接后再计算总长度,比如:full_path = "#{root_path}/#{entry.name}",再检查full_path.length
内容的提问来源于stack exchange,提问作者Jack corley
相关产品推荐
相关产品推荐

