• 【转】php通过curl跨域向asp.net服务器上传文件及参数


    转:http://blog.sina.com.cn/s/blog_13331dce50102vq32.html

     

    这是一个由php通过调用asp.net接口向asp.net服务器post上传文件及参数并根据返回值判断上传结果的问题开始的,当第一次接到这个问题时很快的想到了解决办法:
        
               1.  先通过html页面的form表单将图片及参数上传到php页面,在php页面将接到的数据通过curl_post的传值方法传到作用域并得到返回值。
     
              很快的,根据思路写好了代码,遗憾的是最终结果并不理想,图片每次都是提示上传失败。无奈之下只能换个方法。
            
                2. 将html页面中form表单的action写为接口地址,直接向接口中提交数据。
     
       令人欣慰的是这种方法可以用,但是如何获取到返回的数据呢,并且不跳转页面呢?我想到了iframe
     
               3. 在form表单中添加 target 属性 属性值为 iframe标签的name值 ,使提交表单时在iframe中执行,而不跳转页面。同时通过 js   $(document.getElementByIdx_x('b').contentWindow.document.body).html()  获取到iframe中提交表单后得到的值 。
     
                 但还是失败了 , 原因是我的php环境.net的环境是两个独立的域名无法完成。js由于 w3c 安全标准 无法跨域读取。期间我还想到了ajaxFileUpload方法 但结果一样 无法突破 js 的局限性  。最后回到原点,开始查找curl不能上传的原因:
         
                 4. 我首先在同一个域名下创建了a.php 和 b.php 两个文件  在a.php中将参数和文件通过curl 传向b.php。 在b.php中 打印出 $_FILES的值 
    string(263) "array(1) {
      ["image"]=>
      array(5) {
      ["name"]=>
      string(9) "aaaa.jpeg"
      ["type"]=>
      string(24) "application/octet-stream"
      ["tmp_name"]=>
      string(26) "C:WINDOWS empphp38B.tmp"
      ["error"]=>
      int(0)
      ["size"]=>
      int(421230)
      }
      }
    ["type"]=> string(24) "application/octet-stream"   这是什么卵  原来的 image/jpeg去哪了  查找资料终于找到解决方法  在传向curl 的数组中的 image路径后面 加上  type=type=image/png;就这样问题终于解决...........................
  • 相关阅读:
    备份服务器实战
    LAMP架构编译安装过程详解
    centos .7x service iptables save 错误解决方案
    Linux上安装jdk1.8和配置环境变量
    YUM源使用阿里镜像
    Linux增加swap分区的方法
    elasticsearch5.4集群超时
    职场PPT达人装酷的13条秘诀
    千古绝唱风月事,河山绘尽一人心
    前端集成解决方案
  • 原文地址:https://www.cnblogs.com/sz-xioabai/p/10250792.html
Copyright © 2020-2023  润新知