求大神指教,a网站向b网站上传文件!
不能用flash文件!因为需要支持苹果端
提供一种最常用的避免js跨域的方案:A站点提供一个接口给前端调用,接口后端向B站点上传文件。
提供一个接口给前端调用?这个接口是专门用来转二进制传到b网站麽?
@未找到对象: A后端访问B网站不存在跨域问题,A前端JS向请求自己的接口也不存在跨域问题。
@李宝亨: a后端访问b网站,向b站点上传文件?这个能具体点吗?
@未找到对象: 好的,比如:
B网站有一个上传文件的接口http://B.com/upload_b.ashx
在A网站上,我想用js通过ajax去访问B的上述接口,跨域,无法调用。
--------------
我在A网站上新建一个后端接口upload_a.ashx,这里面的代码作用就是,将传进来的文件通过WebRequest或者WebClient方式调用B网站接口,上传到B网站。
现在,我的js就可以通过ajax调用我自己的后端接口upload_a.ashx,不跨域,没问题。
@李宝亨:周一我先试试,能这样解决那真是太好了。谢谢哈!分给你了。也谢谢吴瑞祥
@未找到对象: ~
你可以不传到B网站上,在B网站上用A网站上的文件的时候 加上A网站的全路径即可阿。
比方说你要用百度的一张图片放在你的网站上 ,直接就是那个文件的地址啊。我看行,你觉得呢?
NO,B网站是文件服务器,所有的文件都要传上B网站上面去。
@未找到对象: 苏嘎,这样子的话我就有点儿猜不透了,很遗憾,没能帮到你。
@新奥尔良多: 没事,谢谢~!
B网站是文件服务器,那就肯定提供了上传接口
A网站页面上选择文件后,异步上传到B站点,返回URL到A网站前台,将URL提交到A网站后台.
有接口的,但因为跨域,是没办法接收到返回值的。没办法得到状态。您说的url工网站到前台,那页面就不能异步了。这不是我想要的。
@未找到对象: 方法很多.异步上传文件的组件都是支持跨域的吧?因为异步上传文件都是用内嵌页实现的.
@吴瑞祥: 没有找到,一般都只能上传,得不到返回值,能得到的却又是flash文件的。没找到合适的。
@未找到对象: 能的,实在不行就自己做了.也就是麻烦点.肯定是能实现的
在B站点上自己做一个用于异步上传的页面,A站把这个页面当成内嵌的显示出来.A站页面肯定能获取到这个页面里的值,上传的时候在内嵌页内同步上传,返回URL到内嵌,A页面提交检查内嵌页状态,就搞定了
@吴瑞祥: 额!我也是这样想的,类似于这种
<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的值就好了
@吴瑞祥: 好像你这方法要好很我,放A网站上上传了没有事件判断是否已上传成功。
@未找到对象: 0.0你内嵌页放个标识上传状态的值不久好了
@吴瑞祥: 我是这样子做的,但我怎么知道上传成功了?没有事件侦听吧?
@未找到对象: 不要老想着事件,没有事件可以回调.
在B站提交页面的响应里.调用A站传入的回调函数.
就行了
@吴瑞祥: 额,我现在用的是iframe里onload方法。页面回调能给个demo么?
@未找到对象: 回调就是在onload里调用外部页面的指定方法了.不用demo吧.
实际上你都做好了的...