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

Мне интересно, есть ли возможность создавать код обработки файлов в 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;
}
?>

0

Решение

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

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

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

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

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);
}

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

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]