使用cURL将文件上传到asp.net mvc操作

时间:2013-11-27 04:31:46

标签: c# php asp.net asp.net-mvc curl

我正在尝试使用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
        ...
     }

1 个答案:

答案 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);