当前位置:   article > 正文

php:实现压缩文件上传、解压、文件更名、压缩包删除功能

php:实现压缩文件上传、解压、文件更名、压缩包删除功能

效果图

1.上传文件

2.压缩包文件

3.itemno1文件

4.上传到系统路径\ItemNo

更名后的itemno1文件

代码

  1. <form action="<?php echo htmlspecialchars($_SERVER['PHP_SELF'], ENT_QUOTES, 'UTF-8'); ?>" method="post" enctype="multipart/form-data">
  2. <input type="hidden" name="FormID" value="<?php echo $_SESSION['FormID']; ?>">
  3. <input type="file" name="folderArchive[]" accept=".zip" multiple>
  4. <input type="submit" value="上传" name="update">
  5. </form>
  6. <?php
  7. $target_dir = "ItemNo/";
  8. $now = date('YmdHis'); // 获取当前日期时间
  9. $itemNo = pathinfo($target_path, PATHINFO_DIRNAME); // 获取料号,假设料号是文件夹名
  10. $counter = 1; // 初始化序号计数器
  11. if (isset($_POST['update'])) {
  12. if (isset($_FILES['folderArchive']) && !empty($_FILES['folderArchive']['name'])) {
  13. $zip_files = $_FILES['folderArchive'];
  14. foreach ($zip_files['name'] as $key => $file_name) {
  15. if ($zip_files['error'][$key] === UPLOAD_ERR_OK) {
  16. $temp_file = $zip_files['tmp_name'][$key];
  17. $target_path = $target_dir . basename($file_name);
  18. // 将临时文件移动到服务器上的适当位置(如果需要)
  19. move_uploaded_file($temp_file, $target_path);
  20. // 创建一个新的 ZipArchive 对象
  21. $zip = new ZipArchive;
  22. // 打开zip文件
  23. if ($zip->open($target_path) === TRUE) {
  24. // 解压缩到指定的目录
  25. $zip->extractTo($target_dir);
  26. $zip->close();
  27. prnMsg(sprintf(_('文件 "%s" 已成功上传成功.'), $file_name), 'success');
  28. } else {
  29. prnMsg(sprintf(_('文件 "%s" 上传成功但无法解压.'), $file_name), 'error');
  30. }
  31. } else {
  32. prnMsg(sprintf(_('文件 "%s" 上传失败.'), $file_name), 'error');
  33. }
  34. //文件命名
  35. if ($zip->open($target_path) === TRUE) {
  36. $zip->extractTo($target_dir);
  37. $zip->close();
  38. // 获取解压后每个料号(子文件夹)的路径
  39. $subDirs = glob($target_dir . '*', GLOB_ONLYDIR);
  40. foreach ($subDirs as $subDir) {
  41. // 获取料号名称
  42. $itemNo = basename($subDir);
  43. // 获取子文件夹中的所有文件
  44. $filesInSubDir = glob($subDir . '/*');
  45. $counter = 1; // 每个料号内部初始化序号计数器
  46. foreach ($filesInSubDir as $file) {
  47. // 跳过目录
  48. if (is_dir($file)) continue;
  49. // 修改日期格式为年月日
  50. $dateForFilename = date('Ymd', strtotime($now));
  51. // 构建新的文件名
  52. $newFileName = $itemNo . '_' . $dateForFilename . '_' . sprintf('%04d', $counter++) . '.' . pathinfo($file, PATHINFO_EXTENSION);
  53. // 重命名文件
  54. rename($file, $subDir . '/' . $newFileName);
  55. // prnMsg(sprintf(_('文件 "%s" 在料号 "%s" 下已成功上传并重命名为 "%s".'), basename($file), $itemNo, $newFileName), 'success');
  56. }
  57. }
  58. } else {
  59. prnMsg(_('命名出错'), 'error');
  60. }
  61. }
  62. // 解压缩和重命名完成后删除原始压缩文件
  63. unlink($target_path);
  64. } else {
  65. prnMsg(_('附件上传失败!'), 'error');
  66. }
  67. unset($_POST['update']);
  68. }
  69. ?>

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/404150
推荐阅读
相关标签
  

闽ICP备14008679号