javascript - 用户图片上传

标签 javascript php file-upload ftp web-hosting

我目前正在开发一个网络应用程序。在一些地方,我允许用户出于各种原因上传图片。现在该网站已经上线(托管在 GoDaddy 上),我似乎无法找出放置正在上传的图像的最佳位置。我有一个运行我的数据库的外部服务器,但它没有为 FTP 设置,所以我不能轻松地使用我的 PHP 后端来上传和检索它们。在我看来,将它们直接存储在 GoDaddy 上也不是一个好主意。

我应该创建一个 FTP 服务器来执行此操作吗?或者有更好的选择。

最佳答案

如果您想将图像存储在远程系统上,那么您确实需要某种方式来传输它们。具体来说,这意味着您需要设置和操作服务器,并且需要使用客户端来触发实际传输。这将您的可能选择限制在您的 wen 托管平台上可用的那些客户端实现。

FTP 就是这样一个协议(protocol),要使用它,您显然需要一个 FTP 服务器。然而,FTP 的问题在于它是来自一个早已消失的地区的恐龙。它是 1970 年代遗留下来的。完全过时了。它专为与当今互联网面临完全不同挑战的网络拓扑而设计。事实上,它确实产生了很多问题。首先,它不加密传输的数据。显然,这是一个 巨大的 隐私问题。现在确实有提供加密的版本。然而,称为 FTPS 的协议(protocol)变体仅对通信 channel 进行加密,而所有其他 channel ,即所有用于传输实际文件的 channel ,均未加密。该协议(protocol)的第二个大问题是它需要相当多的努力来设置防火墙。它为每个低效的传输打开一个单独的网络连接。预计将向互联网开放单独的端口。防火墙管理员的噩梦。甚至可能在某些情况下无法使用该协议(protocol),例如,几乎不可能将 FTPport forwarding 场景结合使用。这就是为什么 FTP 在我看来对于您的计划来说并不是一个好的选择。尽管现在它确实仍在广泛使用。

一个直接的替代方案是“现代替代品”,SFTP 协议(protocol)。尽管名称相似并且确实服务于完全相同的目的,但从技术 Angular 来看,它是一个完全独立的协议(protocol)。它基于安全外壳协议(protocol) (SSH) 运行,该协议(protocol)的服务器也得到广泛传播和验证。它提供强大的加密,为手头任务所需的所有事件提供手段,并且通过查看网络设置更容易配置。所有流量,因此控制 负载流量都通过单个网络连接发送。大多数实现都是作为开源项目开发的,具有安全性和对出现的潜在问题的快速 react 的所有好处。另一个优点:它允许基于非对称 key 对而不是密码进行身份验证,这进一步提高了安全性。这个协议(protocol)是我个人的选择。还因为您无论如何都需要操作 ssh 服务器来管理您的系统。这样可以保持较小的占用空间 ;-)

还有其他选择,例如 WEBDAVS。但是它们鲜为人知,设置起来也不太容易。这就是为什么我建议不要进行此类实验,除非有非常具体的原因。

最后一个选项是网络共享。这允许像本地文件操作一样处理系统之间的文件传输,这显然是一个很大的优势。这样的连接可以加密,但并不是真正为长距离通信而设计的。所以这有点取决于你的具体情况。此处的典型选择是 NFSSMB/CIFS (Samba)。可能还可以使用一些更新的“分布式文件系统”。但由于缺乏个人经验,我不能说太多 ;-) 我看到这个选项的最大问题是它需要对客户端系统(所以你的网络托管平台)的特权访问,因为你必须将共享安装到本地文件系统,无论是在系统层面还是在用户层面。这在廉价的网络托管方案中通常不可能

关于javascript - 用户图片上传,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39758203/

相关文章:

javascript - Firefox 4 beta 不允许在新窗口中动态创建元素(Javascript)?

javascript - HTML5 视频时间更新事件未触发

java - 当前 HTML 页面中的 JSP 响应

ruby-on-rails - Rails:载波未初始化的恒定误差

javascript - jQuery blueimp 文件上传 : Uploads N - 1 files to server in IE

javascript - 如何添加带参数的外部js文件

javascript - 在 Javascript 中重新创建一个查找表

javascript - 从 datepicker 获取值并分配给 php

php - MySQL数据库设计——签到系统

php - 代码有效,但需要很长时间才能加载 "Maximum execution time of 30 seconds exceeded"以及错误