2013-06-19 2 views
0

죄송합니다. 다소 번거롭지 만 유감스럽게도 프로젝트 설정을 변경할 수 없습니다. 일부 텍스트 필드와 파일 입력을 MVC 컨트롤러 작업에 게시해야하는 PHP 페이지에 양식이 있습니다. 게시 부분이 작동하고 내 ViewModel에서 텍스트 데이터를받습니다. 그러나, 어떻게 파일을받을 (이미지, jpg 또는 png 될) 잘 모르겠다. 입력 유형 파일의 ID와 NAME은 "UserIcon"입니다. ASP.NET MVC 2 컨트롤러에 PHP/CURL로 파일 게시

는 ActionResult에서 나는 다음과 같이 HttpPostedFileBase와 함께 그것을 시도 :

public virtual ActionResult RegisterJson(RegistrationModels model, HttpPostedFileBase UserIcon) 

그러나 UserIcon 항상 NULL이다. 나는 RegistrationModels 모델의 일부로서 파일이있는 경우 대신 :

[DisplayName("Ihr Foto")] 
    public string UserIcon { get; set; } 

나는 컬 경로가 나타납니다 @C:\\Windows\\Temp\\phpA03D.tmp;filename=Penguins.jpg;를 문자열로.

그러나 여기에서 나는 파일을 저장하기 위해 다음에해야 할 일에 대해 전혀 모른다. 곱슬 머리글에 $header = array("Content-type: multipart/form-data"); 을 추가하려고했지만 게시 된 모든 양식 필드가 NULL입니다.

누군가가 올바른 방향으로 나를 가리킬 수 있다면 정말 감사 할 것입니다! 나는 여기에 주요 정전을 가진 완전히 뭔가 잘못하고 있다고 생각 : -S

이있는 컬 코드되는 MVC 조치에 게시물 :

$postargs = array(); 
    foreach ($_FILES as $param => $file) { 
     $postargs[$param] = '@' . $file['tmp_name'] . ';filename=' . $file['name'] . ';'; 
    } 
    $fields_string = ""; 
    //url-ify the data for the POST 
    foreach($_POST as $key=>$value) { 
     $fields_string .= $key.'='.$value.'&'; 
    } 

    $fields_string .= http_build_query($postargs); 

    $ch = curl_init(); 

    curl_setopt($ch,CURLOPT_URL,$url); 
    curl_setopt($ch,CURLOPT_POST,count($_POST)); 
    curl_setopt($ch,CURLOPT_POSTFIELDS,$fields_string); 

    $result = curl_exec($ch); 

    curl_close($ch); 

감사합니다 많이!

건배, 캐롤라인

답변

1

때로는 그냥 잠자는 데 도움이됩니다. 하나의 작은 문장은 나를 도왔다. 파일을 말리기 전에 파일을 서버에 저장해야한다. 권리!! 관심을 가질만한 사람들을위한 , 내 작업 솔루션을 게시하도록하겠습니다 :에서

public virtual ActionResult RegisterJson(RegisterModels model, HttpPostedFileBase UserPortrait) 

... 그리고 내 MVC 컨트롤러 액션에 포스트 데이터를 수신

$upload_directory=str_replace("\includes","",dirname(__FILE__)).'/local/'; 

//check if form submitted 

if (!empty($_FILES['UserPortrait'])) { 
    //check for image submitted 
    if ($_FILES['UserPortrait']['error'] > 0) { 
     // check for error re file 
     echo "Error: " . $_FILES["UserPortrait"]["error"] ; 
     exit; 
    } else { 
     //move temp file to our server 
     move_uploaded_file($_FILES['UserPortrait']['tmp_name'], 
     $upload_directory . $_FILES['UserPortrait']['name']); 
     //echo 'Uploaded File.'; 
    } 
} else { 
    die('File not uploaded.'); 
    // exit script 
} 


$post_data = array ( 
    "UserPortrait" => "@".$upload_directory . $_FILES['UserPortrait']['name'].';type='.$_FILES['UserPortrait']['type']  
); 
foreach($_POST as $key=>$value) { 
    $post_data[$key] = $value; 
} 

$ch = curl_init();  
curl_setopt($ch, CURLOPT_URL, "http://www.example.com/handler.php");  
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);  
curl_setopt($ch, CURLOPT_POST, 1);  
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);  
$output = curl_exec($ch);  
curl_close($ch);  
echo $output; 

이제 마법처럼 작동합니다 거기 나머지는 ...

:-)

관련 문제