2011-12-13 11 views
0

私のプロジェクトではカールを使用しています。 libcurlのバージョンは7.18.2です。これはバグです(作業ファイルタイプはありません)、それ以上は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']; 
}