zoukankan      html  css  js  c++  java
  • iframe跨域上传图片

    最近几天一直在做上传图片的功能,需求是这样的,我有一个表单,要上传图片到一个单独做图片存储的服务器(这样做的道理想必大家都应该有所了解)。后台服务接口不支持get方式,只支持post方式。

    方案一:用jquery的$.post异步提交,然后把返回来的值用jquery填充到隐藏域中。可是$.post不支持跨域。 jQuery.ajax()支持get方式的跨域,这其实是采用jsonp的方式来完成的。

    方案二:在java后台模拟form表单post提交,用到apache HttpClient包,把文件流传给服务端。但是发现服务端不接收文件流。

    方案三:利用iframe以及jquery进行表单post提交。代码如下:

               

     <script type="text/javascript" src="http://code.jquery.com/jquery-1.7.2.js"></script>
     <script type="text/javascript" src="http://code.jquery.com/jquery-1.7.2.min.js"></script>
     <script type="text/javascript">
      $(document).ready(function() {  
         $("#file").bind("change", function() {//对文件输入框绑定change事件
        	 $("#form").submit();  
         });  
     })
     </script>
    
     <body>
         <form action="跨域名接口" id="form" name="form"   
              enctype="multipart/form-data" method="post" target="hidden_frame">  
            <span>  
         
                <input type="file" id="file" name="file"/>  
            </span>  
            <iframe name="hidden_frame" id="hidden_frame" style="display:none"></iframe>  
        </form>
     </body>
    

      form的target要指定iframe的名称,这样就看不到页面的跳转了 。

              target的几个属性值 :

    描述
    _blank 在新窗口中打开。
    _self 默认。在相同的框架中打开。
    _parent 在父框架集中打开。
    _top 在整个窗口中打开。
    framename 在指定的框架中打开。

              我们可以看到form表单提交后页面没有做跳转,并且返回值,也在隐藏的iframe中展现。正体现了target的这种妙用。

  • 相关阅读:
    携程的 Dubbo 之路
    应用上云新模式,Aliware 全家桶亮相杭州云栖大会
    重构:改善饿了么交易系统的设计思路
    Arthas 3.1.2 版本发布 | 增加 logger/heapdump/vmoption 命令
    如何检测 Web 服务请求丢失问题
    VPGAME的Kubernetes迁移实践
    Flink SQL 系列 | 5 个 TableEnvironment 我该用哪个?
    如何构建批流一体数据融合平台的一致性语义保证?
    Flink on YARN(下):常见问题与排查思路
    愚蠢的操作
  • 原文地址:https://www.cnblogs.com/iusmile/p/2614460.html
Copyright © 2011-2022 走看看