我们有一个服务器设置工作,我们希望用它来轻松地与已知的客户端交换大文件。 我们正在研究软件,以促进这一点,但有些在Google中input“大文件托pipe”给出了可疑的结果..;)
我们已经提出了以下要求,希望你们中的任何一个能够指出我们提供这种function的解决scheme,或者可以满足我们的需求。
同步/修订pipe理是无关紧要的,它大多是单个大文件(高达1 GB以上)的file upload和下载,我们将需要。
我们希望下载过期并在一定天数/下载(例如5)后被删除,以限制我们必须执行的清理工作量。
交换的数据文件有时会保存机密信息,因此生成的URL应该是随机的,不能公开可见。
我们的用户的技术含量较低,因此,简单的networking表单将比桌面客户端更好(因为我们还必须支持混合的操作系统)。
至于系统的使用,我们要么发送生成的随机URL,以便他们上传文件,或者有一个简单的方法来pipe理和过期的用户。
在Linux(Ubuntu)服务器上工作(所以没有。NET相关的请)
有谁知道符合上述标准的软件? 我们已经在科学界看到了这样的一些例子,但没有我们可以直接使用。
最好的问候,蒂姆
从以下评论复制 :
我的ftp问题是创build用户,设置权限,部署客户端,移动文件和记住后来删除用户,文件夹,权限等等的大量开销。
我们所设想的是短期项目的多用途标记,而不是长期运行的具有适当权限的返回客户。
这听起来像一个简单的PHP脚本可能能够处理它。 虽然我不知道超时等,如果涉及到大文件。
脚本可以像下面这样工作:
以下额外的东西将需要:
交换的数据文件有时会保存机密信息,因此生成的URL应该是随机的,不能公开可见。
这真是太糟了。 如果数据真的是保密的,那么您就不能仅仅信任强制隐私的URL。
那么ftp呢?
它支持身份validation,可以运行脚本删除旧数据,每个平台都可以使用,唯一的问题是select合适的客户端来告诉用户使用。
FTP将是一个不错的select,因为在服务器端,您可以设置脚本来根据需要pipe理文件。 您的客户将能够使用大多数Web浏览器甚至Windows资源pipe理器访问这些文件。 你可以用密码来保护你的ftp文件夹,这样可以提供一些安全性,但是文件传输将会很清晰。 而且,许多企业环境阻止FTP。 但这将是最简单和最灵活的路线。
如果您需要安全地传输文件,WebDav会提供类似的最终用户体验,但您可以通过HTTPS安全地传输文件,并且http和https不太可能被您的客户阻止。 WebDav运行在大多数Web服务器之上(Apache和IIS都有可用的插件),并且由于它实际上只允许访问文件系统,因此可以使用任何脚本或操作系统函数自动pipe理文件。
这里有一个非常基本的PHP解决scheme,应该扩展到做你真正想要的东西:
<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所寻找的应用程序类别称为“托pipe文件传输”。 这个领域有很多厂商。 所有这些都在Linux上运行:CrushFTP,JSCAPE,RhinoSoft(仅限CentOS / RHEL 6.x),GoAnywhere。 还有更多select…
你看过诸如drop.io或dropbox.com的服务吗? drop.io甚至为Javascript,PHP,Ruby和.Net提供了一个带有帮助库的API
任何大文件通过浏览器上传到networking都是有问题的。 在上载1Go文件时,比在上传100kb的图片时,您有更多机会出现错误。 浏览器不知道他们有能力处理上传重试。
所以,如果你想build立一个强大的,易于使用的解决scheme,我绝对认为你将需要在客户PC上的一个胖客户端。 这可能是一个Java小程序,一个FTP客户端,一个通用的下载程序…
一个通用的FTP客户端可能是一个相当简单的解决scheme。 用户pipe理可能很容易使用几个脚本在你的FTP服务器上自动执行。
对不起,我没有一个适当的解决scheme,只是一些想法…