【发布时间】:2012-02-16 13:40:17
【问题描述】:
为了设置场景,需要使用三台机器:(1) 客户端机器,(2) 网络服务器,(3) 和文件存储服务器。这三台机器不在同一个局域网内,也不在同一个域内。网络服务器运行 Apache 和 PHP,存储服务器也运行 IIS7 和 PHP。
我有一个网页——托管在网络服务器上——它包含一个文件上传模块。当用户从该网页上传文件时,我希望将文件直接存储到存储服务器上,而不是 Web 服务器本身。我想避免通过 cURL 或“scp”之类的系统级命令将文件从网络服务器传输到存储服务器,因为这似乎浪费了网络资源和用户的时间。
这是否可以安全地执行,这样做的推荐实现是什么?
我确实找到了可以执行cross-domain uploads 的a 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