转: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的值
|
["type"]=>
string(24) "application/octet-stream" 这是什么卵
原来的 image/jpeg去哪了 查找资料终于找到解决方法
在传向curl 的数组中的 image路径后面 加上
type=type=image/png;就这样问题终于解决...........................