【问题标题】:Possible to upload a file from client's machine to a server that is external to the webserver hosting the form?可以将文件从客户端计算机上传到托管表单的网络服务器外部的服务器吗?
【发布时间】:2012-02-16 13:40:17
【问题描述】:

为了设置场景,需要使用三台机器:(1) 客户端机器,(2) 网络服务器,(3) 和文件存储服务器。这三台机器不在同一个局域网内,也不在同一个域内。网络服务器运行 Apache 和 PHP,存储服务器也运行 IIS7 和 PHP。

我有一个网页——托管在网络服务器上——它包含一个文件上传模块。当用户从该网页上传文件时,我希望将文件直接存储到存储服务器上,而不是 Web 服务器本身。我想避免通过 cURL 或“scp”之类的系统级命令将文件从网络服务器传输到存储服务器,因为这似乎浪费了网络资源和用户的时间。

这是否可以安全地执行,这样做的推荐实现是什么?

我确实找到了可以执行cross-domain uploadsa nice, multi-file uploader on GitHub by blueimp,但是在按照设置跨域上传的说明进行操作后,我从浏览器的调试控制台中收到一条错误消息:

XMLHttpRequest 无法加载 http://storageserver.com/scripts/process_uploads.php。 Access-Control-Allow-Origin 不允许来源http://webserver.com

虽然我意识到这不是最安全的代码,但我在 process_uploads.php 脚本中添加了以下代码以进行故障排除:

header('Access-Control-Allow-Origin: *');

为了清楚起见,这里是我编写由 jQuery-File-Upload 插件解析的表单元素的方式:

<form id="fileupload" action="http://storageserver.com:8080/scripts/process_uploads.php" method="POST" enctype="multipart/form-data">

有没有人成功实现跨域文件上传?如果是这样,您能否说明什么可能是一个强大的解决方案。

【问题讨论】:

    标签: php jquery file cross-domain uploading


    【解决方案1】:

    我建议您购买一台时间机器,可以追溯到几年前网络是一个更值得信赖的地方,而浏览器并不能防止此类事情发生。无论如何,跨域规则似乎每隔几个月就会改变一次。如果可以的话,你最好避开那罐虫子。

    我看到了两个选项,它们都不是很好。毫无疑问还有更多。

    首先:向您的文件服务器提交表单,然后让它向您的 Web 服务器提交表单。

    这取决于(当然很大程度上)两台服务器之间的可靠连接。您说您不想将文件从 Web 服务器复制到文件管理器。因此,请以另一种方式移动您的数据。与在另一个方向复制文件相比,几个字节的表单不会受到影响。因此,将整个表单提交到您的文件服务器,并在那里有一个 PHP 表单处理程序将非文件部分(包括源 IP 和会话标识符)提交到 Web 服务器。您甚至不需要将表单数据存储在文件管理器上,只需让它将 Web 服务器的结果转发回浏览器即可。设计时不要忘记考虑身份验证和安全性。

    二:使用JavaScript或Flash上​​传两种表格

    将您的非文件表单内容放在一个表单中,将文件放在一个单独的表单中。抓住一个表单的提交并让它也提交另一个表单(到另一个服务器)。这是一个糟糕的解决方案,因为它依赖于浏览器上的 JavaScript,但并不总是存在。 (你可以通过要求它来破坏你的网站,但我不推荐它。)由于你已经在使用 jQuery,你可能可以自己想出一个解决方案。

    我不知道你会如何在 Flash 中做到这一点,但我相信这是可能的。我同样确信你不应该在 Flash 中这样做。关注所有闭源“网络”技术。始终使用开放式工具。

    这就是我所拥有的。但我是系统管理员。我很想看看其他人的想法。

    【讨论】:

    • 感谢您的建议。我永远不会使用 Flash 上传文件。 . .这看起来很陈旧 :) 但是,我使用了来自 GitHub 的 blueimp 的 jQuery 文件上传器,并将其放在文件服务器上。然后,在网络服务器上,我创建了一个使用 easyXDM 插件的页面,该插件在 iframe 中加载远程文件服务器的上传器小部件,并允许在两个页面之间进行通信。到目前为止,工作就像一个魅力
    猜你喜欢
    • 2015-01-07
    • 1970-01-01
    • 1970-01-01
    • 2013-11-04
    • 2018-06-20
    • 1970-01-01
    • 2012-08-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多