обработка файлов в паре - PullRequest
       9

обработка файлов в паре

0 голосов
/ 02 ноября 2018

Мне интересно, есть ли возможность создавать код обработки файлов в Vapor? (Swift)

Например, я хочу создать папку на сервере, а затем скопировать существующий файл из одного места на сервере в эту папку.

Возможно ли это в Vapor?

Я сделал копирование файла в php, как видно из функции ниже, которая фактически копирует файл из источника в место назначения:

<?php
function copyr($source, $dest, $permissions = 0701)
{
    // Check for symlinks
    if (is_link($source)) {
        return symlink(readlink($source), $dest);
    }

    // Simple copy for a file
    if (is_file($source)) {
        copy($source, $dest);
        return chmod($dest, 0204);
    }

    // Make destination directory
    if (!is_dir($dest)) {
        mkdir($dest, $permissions);
    }

    // Loop through the folder
    $dir = dir($source);
    while (false !== $entry = $dir->read()) {
        // Skip pointers
        if ($entry == '.' || $entry == '..') {
            continue;
        }

        // Deep copy directories
        copyr("$source/$entry", "$dest/$entry", $permissions);
    }

    // Clean up
    $dir->close();
    return true;
}
?>

1 Ответ

0 голосов
/ 04 ноября 2018

Вы можете попробовать этот код, он может работать в вашем случае.

Предположим, мне нравится копировать один файл из моего проекта в новую папку вне папки моего проекта.

// Get the project directory
let directory = DirectoryConfig.detect()
let filePath = directory.workDir + "../mydoc"

Теперь создайте каталог, используя FileManager . Это создаст папку вне вашей папки проекта.

do {
   try FileManager.default.createDirectory(atPath: filePath, withIntermediateDirectories: false, attributes: nil)
   } catch let error as NSError {
        print(error.localizedDescription);
   }

Теперь получите ваш абсолютный путь к файлу с расширением, которое нужно скопировать.

 let myfile = directory.workDir + "README.md"
 let destPath = directory.workDir + "../mydoc/README.md"

    do {
        try FileManager.default.copyItem(at: URL(fileURLWithPath: myfile), to: URL(fileURLWithPath: destPath))
        print("Copy success")
    } catch let error as NSError {
        print(error.localizedDescription);
    }

Вы увидите, что файл скопирован. Это работает на моем локальном ПК. Я не могу получить грант на сервер из-за безопасности сервера.

...