У нас есть настроенный сервер, который мы хотели бы использовать для простого обмена большими файлами с известными клиентами. Мы ищем программное обеспечение, чтобы облегчить это, но как-нибудь ввод "большой файловый хостинг" в Google дает сомнительные результаты ..;)
Мы выдвинули следующие требования, и я надеюсь, что любой из вас может указать нам направление решения, которое предлагает эту функциональность или адаптируется к нашим потребностям.
Управление синхронизацией / редактированием не вызывает беспокойства, это в основном загрузка и скачивание одного большого (до 1+ ГБ) файла, которые нам понадобятся.
Мы хотели бы сделать так, чтобы загрузки истекали и удалялись через определенное количество дней / загрузок (скажем, 5 за каждую), чтобы ограничить объем очистки, который нам придется сделать.
Файлы данных, которыми обмениваются, иногда содержат конфиденциальную информацию, поэтому создаваемые URL-адреса должны быть случайными и не общедоступными.
Наши пользователи относятся к категории менее технически подкованных, поэтому простая веб-форма будет лучше, чем настольный клиент (потому что мы также должны поддерживать несколько операционных систем).
Что касается использования системы, мы хотели бы либо рассылать сгенерированные случайные URL-адреса для загрузки файлов, либо иметь простой способ управления и истечения срока действия пользователей.
Работает на сервере Linux (Ubuntu) (так что ничего, связанного с .Net, пожалуйста)
Кто-нибудь знает программное обеспечение, которое соответствует вышеуказанным критериям? Мы уже видели несколько примеров этого в научном сообществе, но ничего не могли бы использовать напрямую ...
С уважением, Тим
Скопировано из комментариев ниже:
Моя проблема с ftp - это большие накладные расходы на создание пользователей, настройки прав, развертывание клиентов, перемещение файлов и запоминание последующего удаления пользователей, папок, прав и т. Д.
Мы предполагаем, что для краткосрочных проектов будет больше одноразовых токенов, чем для постоянных клиентов с соответствующими правами.
Похоже, с этим справится простой скрипт PHP. Хотя я не знаю о тайм-аутах и т. Д., Если речь идет об этих больших файлах.
Скрипт может работать следующим образом:
Потребуются следующие дополнительные вещи:
FTP будет хорошим выбором, так как на стороне сервера вы можете настроить скрипты для управления файлами по мере необходимости. Ваши клиенты смогут получить доступ к файлам с помощью большинства веб-браузеров или даже Windows Explorer. Вы можете защитить паролем свои ftp-папки, что обеспечивает некоторую безопасность, однако передача файлов будет прозрачной. Кроме того, многие корпоративные среды блокируют FTP. Но это был бы самый простой и гибкий маршрут.
Если вам требуется безопасная передача файлов, то WebDav предоставляет аналогичные возможности для конечных пользователей, но вы можете безопасно передавать файлы через HTTPS, а http и https с меньшей вероятностью будут заблокированы вашими клиентами. WebDav работает поверх большинства веб-серверов (и у Apache, и у IIS есть плагины), и, поскольку он на самом деле просто предоставляет доступ к вашей файловой системе, вы можете использовать любые скрипты или функции операционной системы для автоматического управления файлами.
Файлы данных, которыми обмениваются, иногда содержат конфиденциальную информацию, поэтому создаваемые URL-адреса должны быть случайными и не общедоступными.
Это очень плохо. Если данные действительно конфиденциальны, вы не можете доверять только URL-адресу для обеспечения конфиденциальности.
Что о ftp
?
Он поддерживает аутентификацию, вы можете запускать сценарии для удаления старых данных, он доступен на каждой платформе, и ваша единственная проблема будет заключаться в выборе подходящего клиента, который будет указывать пользователям использовать его.
Здесь очень базовое решение PHP, которое следует расширить, чтобы делать то, что вы действительно хотите:
<form enctype="multipart/form-data" method="POST">
File: <input name="file" type="file">
<input type="submit" value="Upload">
</form>
<?php
$directory = "/var/www/secure/files/";
$url_prefix = "http://www.mywebsite.com/secure/files/";
if(array_key_exists("file", $_FILES)) {
if($_FILES["file"]["error"] > 0) {
echo "Error occurred during upload: " . $_FILES["file"]["error"];
}
else {
# Randomly generate a filename with the correct extension
$filename = $_FILES["file"]["name"];
$ext = split("[/\\.]", strtolower($filename));
$ext = $exts[count($ext)-1];
$target = $directory . rand() . "." . $ext;
# Move the file to the desired directory and rename using the generated filename
if(move_uploaded_file($_FILES["file"]["tmp_name"], $target)) {
echo "File upload successful: " . $target;
}
else {
echo "Error occurred while storing file.";
}
}
$dirHandler = opendir($directory);
// Read the directory
while($entry = readdir($dirHandler)) {
$dir[] = $entry;
}
closedir($dirHandler);
sort($dir);
echo "<table>\n";
echo "<tr><th>Filename</th><th>Filetype</th><th>Filesize</th></tr>\n";
$count = count($dir);
for($i = 0; $i < $count; $i++) {
if (substr("$dirArray[$i]", 0, 1) != "."){ // don't list hidden files
echo "<tr><td><a href=\"" . $url_prefix . $dir[$i] . "\">" . $dir[$i] . "</a></td>";
echo "<td>" . filetype($dir[$i]) . "</td>";
echo "<td>" . filesize($dir[$i]) . "</td></tr>\n";
}
}
echo "</table>";
}
?>
Это старый вопрос, но класс приложения, который ищет OP, называется «Управляемая передача файлов». В этом пространстве много продавцов. Все они работают в Linux: CrushFTP, JSCAPE, RhinoSoft (только CentOS / RHEL 6.x), GoAnywhere. Есть еще много вариантов на выбор ...
Вы смотрели на такие сервисы, как drop.io или dropbox.com? drop.io даже предоставляет API со справочными библиотеками для Javascript, PHP, Ruby и .Net
Загрузка любого большого файла в Интернет через браузер проблематична. У вас гораздо больше шансов получить ошибку при загрузке файла 1Go, чем во время загрузки изображения размером 100 КБ. А браузеры не умеют хорошо обрабатывать повторные попытки загрузки.
Так что если вы хотите создать надежное и простое в использовании решение, я определенно думаю, что вам понадобится толстый клиент на клиентском ПК. Это может быть Java-апплет, FTP-клиент, загрузчик общего назначения ...
FTP-клиент общего назначения может быть довольно простым решением. Управление пользователями, вероятно, можно легко автоматизировать на вашем FTP-сервере с помощью нескольких скриптов ...
Извините, у меня нет подходящего решения, всего несколько идей ...