首页 新闻 会员 周边

跨全域上传文件

0
悬赏园豆:10 [已解决问题] 解决于 2014-09-19 18:50

  求大神指教,a网站向b网站上传文件!

问题补充:

不能用flash文件!因为需要支持苹果端

hardy_Wang的主页 hardy_Wang | 初学一级 | 园豆:17
提问于:2014-09-19 16:32
< >
分享
最佳答案
0

提供一种最常用的避免js跨域的方案:A站点提供一个接口给前端调用,接口后端向B站点上传文件。

收获园豆:10
libaoheng | 小虾三级 |园豆:1433 | 2014-09-19 18:08

提供一个接口给前端调用?这个接口是专门用来转二进制传到b网站麽?

hardy_Wang | 园豆:17 (初学一级) | 2014-09-19 18:15

@未找到对象: A后端访问B网站不存在跨域问题,A前端JS向请求自己的接口也不存在跨域问题。

libaoheng | 园豆:1433 (小虾三级) | 2014-09-19 18:24

@李宝亨: a后端访问b网站,向b站点上传文件?这个能具体点吗?

hardy_Wang | 园豆:17 (初学一级) | 2014-09-19 18:35

@未找到对象: 好的,比如:

B网站有一个上传文件的接口http://B.com/upload_b.ashx

在A网站上,我想用js通过ajax去访问B的上述接口,跨域,无法调用。

--------------

我在A网站上新建一个后端接口upload_a.ashx,这里面的代码作用就是,将传进来的文件通过WebRequest或者WebClient方式调用B网站接口,上传到B网站。

现在,我的js就可以通过ajax调用我自己的后端接口upload_a.ashx,不跨域,没问题。

libaoheng | 园豆:1433 (小虾三级) | 2014-09-19 18:42

@李宝亨:周一我先试试,能这样解决那真是太好了。谢谢哈!分给你了。也谢谢吴瑞祥

hardy_Wang | 园豆:17 (初学一级) | 2014-09-19 18:50

@未找到对象: ~

libaoheng | 园豆:1433 (小虾三级) | 2014-09-19 18:55
其他回答(2)
0

你可以不传到B网站上,在B网站上用A网站上的文件的时候  加上A网站的全路径即可阿。

比方说你要用百度的一张图片放在你的网站上 ,直接就是那个文件的地址啊。我看行,你觉得呢?

大楚打码人 | 园豆:4313 (老鸟四级) | 2014-09-19 16:34

NO,B网站是文件服务器,所有的文件都要传上B网站上面去。

支持(0) 反对(0) hardy_Wang | 园豆:17 (初学一级) | 2014-09-19 16:36

@未找到对象: 苏嘎,这样子的话我就有点儿猜不透了,很遗憾,没能帮到你。

支持(0) 反对(0) 大楚打码人 | 园豆:4313 (老鸟四级) | 2014-09-19 16:37

@新奥尔良多: 没事,谢谢~!

支持(0) 反对(0) hardy_Wang | 园豆:17 (初学一级) | 2014-09-19 16:38
0

B网站是文件服务器,那就肯定提供了上传接口

A网站页面上选择文件后,异步上传到B站点,返回URL到A网站前台,将URL提交到A网站后台.

吴瑞祥 | 园豆:29449 (高人七级) | 2014-09-19 16:39

有接口的,但因为跨域,是没办法接收到返回值的。没办法得到状态。您说的url工网站到前台,那页面就不能异步了。这不是我想要的。

支持(0) 反对(0) hardy_Wang | 园豆:17 (初学一级) | 2014-09-19 16:42

@未找到对象: 方法很多.异步上传文件的组件都是支持跨域的吧?因为异步上传文件都是用内嵌页实现的.

支持(0) 反对(0) 吴瑞祥 | 园豆:29449 (高人七级) | 2014-09-19 16:52

@吴瑞祥: 没有找到,一般都只能上传,得不到返回值,能得到的却又是flash文件的。没找到合适的。

支持(0) 反对(0) hardy_Wang | 园豆:17 (初学一级) | 2014-09-19 16:53

@未找到对象: 能的,实在不行就自己做了.也就是麻烦点.肯定是能实现的

在B站点上自己做一个用于异步上传的页面,A站把这个页面当成内嵌的显示出来.A站页面肯定能获取到这个页面里的值,上传的时候在内嵌页内同步上传,返回URL到内嵌,A页面提交检查内嵌页状态,就搞定了

支持(0) 反对(0) 吴瑞祥 | 园豆:29449 (高人七级) | 2014-09-19 17:17

@吴瑞祥: 额!我也是这样想的,类似于这种

<form action="http://file.met.com/uploadhandler.ashx?cb=http://localhost:48267/fileinfo.html" method="POST" enctype="multipart/form-data" target="upload">
    <input type="file" id="file" name="upload_file" onclick="return FileUpload_onclick()" onchange="return FileUpload_onselect()" />
    <input type="text" name="tmpurl" value="http://localhost:48267/home/index" style="display: none" />
    //注意这里!  
        <input type="submit" value="开始上传" />    
   <span id="msg"></span>
</form>

<iframe name="upload" id="iframeUpload" style="display:block" width="200px;">1111</iframe>

这样上传完后取这个iframe的值就好了

支持(0) 反对(0) hardy_Wang | 园豆:17 (初学一级) | 2014-09-19 17:20

@吴瑞祥: 好像你这方法要好很我,放A网站上上传了没有事件判断是否已上传成功。

支持(0) 反对(0) hardy_Wang | 园豆:17 (初学一级) | 2014-09-19 17:28

@未找到对象: 0.0你内嵌页放个标识上传状态的值不久好了

支持(0) 反对(0) 吴瑞祥 | 园豆:29449 (高人七级) | 2014-09-19 17:32

@吴瑞祥: 我是这样子做的,但我怎么知道上传成功了?没有事件侦听吧?

支持(0) 反对(0) hardy_Wang | 园豆:17 (初学一级) | 2014-09-19 17:33

@未找到对象: 不要老想着事件,没有事件可以回调.

在B站提交页面的响应里.调用A站传入的回调函数.

就行了

支持(0) 反对(0) 吴瑞祥 | 园豆:29449 (高人七级) | 2014-09-19 17:40

@吴瑞祥: 额,我现在用的是iframe里onload方法。页面回调能给个demo么?

支持(0) 反对(0) hardy_Wang | 园豆:17 (初学一级) | 2014-09-19 17:49

@未找到对象: 回调就是在onload里调用外部页面的指定方法了.不用demo吧.

实际上你都做好了的...

支持(0) 反对(0) 吴瑞祥 | 园豆:29449 (高人七级) | 2014-09-19 17:52
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册