我正在寻找一种将样本文件分发给客户的方法。 要求是上传文件(相对)简单,链接可以发送给可以用浏览器下载文件的客户端,客户端的链接不能用于查找其他文件
目前,我使用Dropbox和脚本来创build一个独特的保pipe箱文件夹并生成链接,如http://dl.dropbox.com/u/1234/some_long_random_name/the_sameple_video.mov “,而不是pipe理密码
没有必要encryption内容,文件通常<1Gb,我们只希望每天下载一些。 我们不希望在我们的网站上托pipe它(不要问),我们希望有一段时间的服务,但数据存储在本地,所以9-9冗余不是问题
我会提供一个S3的答案,因为它是你的标签之一。 亚马逊的S3允许您设置文件的权限,并创build一个签名的URL到期时间。 一起使用这两个想法,可以创build一个作为一次性使用URL的系统。 此外,S3具有两级存储,因此如果冗余不是您的主要因素,则可以使用减less的冗余存储来节省一点。 与所有AWS服务一样,您将必须为使用的带宽付费。 S3也收取每个请求的费用到您的文件。
与典型的S3实现不同,文件权限设置为public,在这里您将权限设置为private,并使用您的访问密钥进行签名以授予访问权限。
如果你不关心你的客户是否与他人共享链接或下载多次(只要他们不能访问任何其他文件),那么实现是非常简单的,你只需要创build一个(相当远)未来的过期date签名的URL。 所以,例如,你上传你的文件到S3(默认情况下是私有的)。 创build一个到期一周的签名url; 而且您的客户可以在下个星期内使用所提供的URL访问文件,并且可以多次。 他们不能访问任何其他文件,因为他们没有签名的URL – 所有文件都是私人的。
上述情况的问题是时间问题之一 – 您不想让URL可用时间过长,但您需要为客户端提供足够的时间来访问该文件 – 还需要一些努力来validation您的客户端实际上已经查看了这个文件(例如,你可以打开S3的日志logging,并检查你的日志)。
备用scheme需要在您的站点上部分实施,而不是完全依赖于S3。 创build一个接受唯一ID(存储在数据库中)的页面,并向客户端发送包含该ID的页面链接。 当您的客户端访问该页面时,您会生成一个在不久的将来(30秒)内过期的经过签名的S3 URL。 (同时,您当然可以logging该ID不再有效,并且您的客户端已经访问了该文件)。 使用生成的URL启动下载。 通过这种方式,客户端只能使用一次URL–它们不能让其他人使用(尽pipe它们可以使文件本身可供其他人使用),他们可以随时使用通过电子邮件发送的链接(因为存在没有到期),并且由于您使用签名的URL,他们不能访问任何其他文件(即使他们猜测的path/文件名)。
对于更适合非技术用户的东西,我使用http://www.yousendit.com/ 。
它是免费的文件高达50MB,非常容易任何人使用。