我需要使用php POST发送原始多部分数据但没有html表单...我用jquery $ .post()启动进程(目的是更改Twitter帐户的背景)。
我怎样才能实现这一目标?这是我目前(但仍然不完整)的代码:
1)图像文件名插入此隐藏的输入字段:
<input type="hidden" id="profile_background_image_url" value="oats.jpg" />
2)点击提交按钮时,会触发一个javascript函数...并调用:
$.post('helper.php',{
profile_background_image_url:$('#profile_background_image_url').val()
});
3) helper.php 有
$param = array();
$param['image'] = '/www/uploads/'.$_POST['profile_use_background_image'];
$status = $connection->post('account/update_profile_background_image',$param);
备注:
底线,在第三步中,我需要将原始多部分数据中的 $ param ['image'] 发送到 $ connection 对象(推特图书馆)。
有什么想法吗?
一些参考文献:http://dev.twitter.com/doc/post/account/update_profile_background_image
答案 0 :(得分:1)
是的,我现在看到他将post字段数组构建为查询字符串,这意味着您必须手动设置内容类型,并且@
字段中的image
键不会发挥其魔力只适用于数组参数。更重要的是,我没有看到一种方法来修改标题而不破坏库或扩展它并替换某些功能。
我会尝试将@
添加到image
param的文件路径中,如:
$param['image'] = '@/www/uploads/'.$_POST['profile_use_background_image'];
这是使用cURL执行此操作的便捷方式,看起来libray基本上使用cURL来发出请求,因此应该可以正常工作。
答案 1 :(得分:0)
解决!
curl_setopt($ci, CURLOPT_POST, TRUE);
if(is_array($files)){
$post_file_array = array();
foreach($files as $key=>$value){
$post_file_array[$key] = "@{$value}";
}
curl_setopt($ci, CURLOPT_POSTFIELDS, $post_file_array);
if (!empty($postfields)) {
$url = "{$url}?{$postfields}";
}
}
else if (!empty($postfields)) {
curl_setopt($ci, CURLOPT_POSTFIELDS, $postfields);
}