2011-12-13 3 views
0

저는 프로젝트에서 컬을 사용합니다. libcurl의 버전은 7.18.2입니다. 그것은 버그입니다 (작동하지 않는 파일 형식), more - here. 파일 업로드의 경우 다음 코드를 사용합니다.컬이있는 파일 업로드. Php

if (!empty($_POST)){ 
    $post = $_POST; 
} 

if (!empty($_FILES)){ 
    foreach ($_FILES as $param => $file) { 
     if ($file['tmp_name']) 
       $files[$param] = '@' . $file['tmp_name'] . ';filename=' . $file['name'] . ';type=' . $file['type']; 
    } 
} 

$post = !empty($files) ? array_merge($post, $files) : $post; 

// ... 

if ($curl = curl_init()) { 

    curl_setopt($curl, CURLOPT_URL, $link); 
    curl_setopt($curl, CURLOPT_USERAGENT, $browser); 
    curl_setopt($curl, CURLOPT_REFERER, $reffer); 
    curl_setopt($curl, CURLOPT_POST, true); 
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); 
    curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true); 
    curl_setopt($curl, CURLOPT_COOKIE, $cookie); 

    if (!empty($post)) { 
     curl_setopt($curl, CURLOPT_POSTFIELDS, $post); 
    } 

    $content = curl_exec($curl); 

    curl_close ($curl); 
} 

서버에 파일 유형을 어떻게 보낼 수 있습니까? libcurl 업그레이드가 불가능합니다. 고마워요.

+0

방금 ​​파일 형식에 대한 또 다른 포스트 필드를 사용할 수 없습니다 문제에서? – piotrekkr

+0

무슨 뜻입니까? $ _POST [ 'file_type']? –

+0

예. 파일을 유형없이 말하고 유형을 보내는 다른 POST 필드로 보냅니다. 그런 다음 서버의 스크립트를 변경하여 $ _FILE에서 파일을 가져 와서 $ _POST에서 입력하십시오. – piotrekkr

답변

0

감사합니다. 나는 그것에 대해 생각했다.

컬 부분 :

if (!empty($_FILES)){ 

     foreach ($_FILES as $param => $file) { 

      if ($file['tmp_name']){ 

       $post[$param]='@' . $file['tmp_name']; 
       $post['_ftype']=$file['type']; 
       $post['_ffilename']=$file['name']; 
       $post['_ffileuploadname']=$param; 
      } 
     } 
} 

서버 부분 :

if (!empty($_FILES) && isset($_POST['_ffileuploadname'])){ 

    $name=$_POST['_ffileuploadname']; 
    $_FILES[$name]['type']=$_POST['_ftype']; 
    $_FILES[$name]['name']=$_POST['_ffilename']; 
}