我正在为一些社交网络创建一个预定帖子的网络服务.需要处理高流量下文件上传的帮助.
流程概述:
>用户将文件上传到SomeServer(不是我的).
> SomeServer然后使用JSON字符串进行响应.
>我的网络应用程序应存储该JSON响应.
选项1:保存,cURL POST,删除tmp
我使它成功的愚蠢方式:
>用户将文件上传到MyWebApp;
> MyWebApp cURL是SomeServer的文件,获得响应.
选项2:JS魔术
它可以是完美的聪明方式:
>用户从iFrame中直接将文件上传到SomeServer;
> MyWebApp通过JavaScript获取响应.
但由于“同源政策”,这是不可能的,不是吗?
>用户将文件上传到MyWebApp;
> Nginx拦截文件上传并将它们直接发送到SomeServer;
> JSON响应也被Nginx拦截并由MyWebApp处理.
这有什么意义吗,nigx配置是什么,例如,/ fileupload将它代理到SomeServer?
解决方法:
我没有服务器可以代替SomeServer来测试我的建议,但无论如何我都会试一试.如果我错了,那么我想你只需要use Flash (sample code from VK).
如何使用iFrame将文件上传到SomeServer,接收JSON响应,然后使用postMessage将iSrame中的JSON响应从您的站点传递到主窗口.据我了解,这几乎是创建postMessage的动机.
总的来说,我正在考虑like this或YUI’s io()
module,但添加了postMessage来绕过相同的原始政策.
或者在VK的情况下,using their explicit iFrame support.在我看来,您可以向全局VK对象添加方法,然后使用VK.callMethod()从VK原始域调用该方法.您可以使用该变通方法创建一个可以从隐藏的iFrame读取响应的函数.
因此,您使用VK.api(‘photos.getUploadServer’,…)来获取POST URL.
然后使用JS将该URL作为用于上载文件的FORM的操作插入.按照io()
docs中“在HTML表单中上传文件”下的示例,在完整功能中,使用postMessage将JSON发布回父窗口.请参阅example and docs here.(如果它不能与io()一起使用,如果我对VK.callMethod()的说法正确,你当然可以使用roll-your-own示例代码.)
然后,为了响应postMessage,您可以使用常规AJAX将JSON响应上传回您的服务器.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。