Просмотр исходного кода

:sparkles:支持输入绝对路径

visuddhinanda 1 год назад
Родитель
Сommit
17b8f2d75c
1 измененных файлов с 19 добавлено и 11 удалено
  1. 19 11
      api-v8/app/Console/Commands/ExportZip.php

+ 19 - 11
api-v8/app/Console/Commands/ExportZip.php

@@ -46,42 +46,50 @@ class ExportZip extends Command
     {
         Log::debug('export offline: 开始压缩');
         $this->info('export offline: 开始压缩');
-        $exportPath = 'app/public/export/offline';
+        $defaultExportPath = storage_path('app/public/export/offline');
         $exportFile = $this->argument('filename');
-
+        $filename = basename($exportFile);
+        if ($filename === $exportFile) {
+            $exportFullFileName = $defaultExportPath . '/' . $filename;
+            $exportPath = $defaultExportPath;
+        } else {
+            $exportFullFileName = $exportFile;
+            $exportPath = dirname($exportFile);
+        }
         Log::debug(
             'export offline: zip file {filename} {format}',
             [
                 'filename' => $exportFile,
-                'format' => $this->argument('format')
+                'format' => $this->argument('format'),
+                'exportFullFileName' => $exportFullFileName,
+                'exportPath' => $exportPath,
             ]
         );
         switch ($this->argument('format')) {
             case '7z':
-                $zipFile = $exportFile . ".7z";
+                $zipFile = $filename . ".7z";
                 break;
             case 'lzma':
-                $zipFile = $exportFile . ".lzma";
+                $zipFile = $filename . ".lzma";
                 break;
             default:
-                $zipFile = $exportFile . ".gz";
+                $zipFile = $filename . ".gz";
                 break;
         }
         //
-        $exportFullFileName = storage_path($exportPath . '/' . $exportFile);
         if (!file_exists($exportFullFileName)) {
-            Log::error('export offline: no db file {filename}', ['filename' => $exportFullFileName]);
-            $this->error('export offline: no db file {filename}' . $exportFullFileName);
+            Log::error('export offline: no  file {filename}', ['filename' => $exportFullFileName]);
+            $this->error('export offline: no  file {filename}' . $exportFullFileName);
             return 1;
         }
 
-        $zipFullFileName = storage_path($exportPath . '/' . $zipFile);
+        $zipFullFileName = $exportPath . '/' . $zipFile;
         if (file_exists($zipFullFileName)) {
             Log::debug('export offline: delete old zip file:' . $zipFullFileName);
             unlink($zipFullFileName);
         }
 
-        shell_exec("cd " . storage_path($exportPath));
+        shell_exec("cd " . $exportPath);
         switch ($this->argument('format')) {
             case '7z':
                 $command = [