我目前正在开发一个网络应用。在一些地方,我允许用户出于各种原因上传图像。既然网站已经上线(托管在GoDaddy上),我似乎无法找到放置上传图像的最佳位置。我有一个运行我的数据库的外部服务器,但它没有设置为FTP,所以我不能轻易使用我的PHP后端上传它们并检索它们。对我而言,将它们直接存储在GoDaddy上也不是一个好主意。
我应该创建一个FTP服务器来执行此操作吗?还是有更好的选择。
答案 0 :(得分:2)
如果要将图像存储在远程系统上,那么确实需要某种方式来传输它们。具体而言,这意味着您需要设置和操作服务器,并且需要使用客户端来触发实际传输。这限制了您对wen托管平台上可用的客户端实现的可能选择。
FTP
就是这样一个协议,要使用它你显然需要一个FTP
服务器。然而FTP
的问题在于它是一个早已消失的地区的恐龙。这是从1970年左右的遗留下来的。完全过时了。它专为网络拓扑而设计,与当今的互联网完全不同。事实上它确实会产生很多问题。首先,它不加密传输的数据。显然,这是一个巨大的隐私问题。这些天确实有版本提供加密。但是,该协议变体(称为FTPS
)仅加密通信通道,而所有其他通道(所有用于传输实际文件的通道)都不会加密。该协议的第二大问题是它需要相当多的努力来进行防火墙设置。它为每次传输打开一个单独的网络连接,这是低效的。预计单独的港口将向互联网开放。防火墙管理员的噩梦。甚至可能是协议在某些情况下无法使用,例如,将FTP
与port forwarding
方案结合使用几乎是不可能的。这就是为什么FTP
对你的眼睛计划不是一个好的选择。尽管如今它确实仍在广泛使用。
一个直接的替代方案是"现代的替代",SFTP
协议。尽管被称为类似且确实用于完全相同的目的,但从技术角度来看,它是完全独立的协议。它基于安全shell协议(SSH
)运行,服务器也广泛传播并经过验证。它提供强大的加密功能,为手头任务所需的所有活动提供方法,并且通过网络设置更容易配置。所有流量,因此控制和有效负载流量通过单个网络连接发送。大多数实现都是作为开源项目开发的,具有安全性和对潜在问题的快速反应的所有好处。另一个优点:它允许基于非对称密钥对而不是密码进行身份验证,这进一步提高了安全性。这个协议是我个人的选择。另外,因为您无论如何都需要操作ssh服务器来管理您的系统。这样可以减小占地面积; - )
还有其他替代方案,例如WEBDAVS
。但它们不太为人所知,不太容易设置。这就是为什么我建议反对这样的实验,除非有非常具体的原因。
最后一个选项是网络共享。这允许处理系统之间的文件传输,如本地文件操作,这显然是一大优点。这种连接可以加密,但并不是真正设计用于长途通信。所以这取决于你的具体情况。这里的典型选择是NFS
或SMB
/ CIFS
(Samba
)。可能还有一些较新的分布式文件系统"可能有用。但由于缺乏个人经验,我不能说太多;-)我看到这个选项的最大问题是它需要特权访问客户端系统(所以你的网络托管平台),因为你必须将共享安装到本地文件系统,无论是在系统上还是在用户级别上。在廉价的虚拟主机方案中,这通常不。
答案 1 :(得分:1)
由于担心会阻止直接访问,因此最好的解决方案是将图像移出公用文件夹,以防止apache / nginx提供文件。
然后你有php读取请求的文件并将内容流式传输给用户。