zoukankan      html  css  js  c++  java
  • 【转】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;就这样问题终于解决...........................
  • 相关阅读:
    批处理
    使用T-SQL语句更新数据、删除
    使用T-SQL语句一次性插入另一张表的数据
    使用T-SQL语句插入数据
    CSS色调旋转滤镜
    初探Lerna
    基层管理人员的部分思考 --读《大秦帝国》有感
    (转)React学习笔记(干货满满)
    git常用命令(转)
    个人JS体系整理(三)
  • 原文地址:https://www.cnblogs.com/sz-xioabai/p/10250792.html
Copyright © 2011-2022 走看看