【转】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;就这样问题终于解决...........................
原文地址:https://www.cnblogs.com/sz-xioabai/p/10250792.html