我正在尝试使用cURL从PHP上传文件到asp.net mvc 4控制器操作。
在调用move_uploaded_file
后,该文件已成功上载到磁盘上。
.NET MVC和PHP站点都在IIS下托管。我得到了这个HTTP响应:
错误请求 - 内容长度无效
有没有人实现过这个目标?
相关的PHP代码:
if(move_uploaded_file($from, $to))
{
$imageFile = '@' . $to . ';type='.$_FILES['file']['type'];
$post_data = http_build_query($_POST);
$post_data["imageFile"] = $imageFile;
$ch = curl_init(self::URL . '/photos/uploadphoto');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($chpg, CURLOPT_POST, count($data));
curl_setopt($chpg, CURLOPT_POSTFIELDS, $data);
$result = curl_exec($ch);
curl_close($ch);
}
相关的.NET C#代码:
[HttpPost]
public ActionResult UploadPhoto(HttpPostedFileBase imagefile)
{
// imageFile is null
var file = Request.Files.Count > 0 ? Request.Files[0] : null;
// file is also null
...
}
答案 0 :(得分:1)
你确定$ chpg吗?我相信这是出错的地方,也许您需要将$ chpg更改为$ ch,尝试使用以下2行代码:
curl_setopt($ch, CURLOPT_POST, count($data));
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
而不是:
curl_setopt($chpg, CURLOPT_POST, count($data));
curl_setopt($chpg, CURLOPT_POSTFIELDS, $data);