2

重複の可能性:
heroku php アプリで curl を使用してファイルをアップロードできない

PHPでファイルのアップロードを処理した後、curlを使用してそのファイルをSlim Frameworkを使用する残りのAPIに送信しようとしています。ただし、 $_FILES は、Slim の関数に到達すると常に空になります。

送信者.php

if(move_uploaded_file($_FILES['myFile']["tmp_name"], $UploadDirectory . $_FILES['myFile']["name"] ))
{
    $ch = curl_init();
    $data = array('name' => 'test', 'file' => $UploadDirectory . $_FILES['myFile']["name"]);

    curl_setopt($ch, CURLOPT_URL, 'http://localhost/slimlocation/upload/');
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $data);

    curl_exec($ch); 
 }

そして、Slim でリクエストを受信する関数:

$app->post('/upload/', function() use ($app) {
    if(isset($_FILES)){

        // count is always zero
        echo count($_FILES);

    }
});

私はファイルを間違って送信していますか、そして/または私が試みていることを行うことは可能ですか? どんな助けでも大歓迎です。

4

2 に答える 2

1

私の知る限り、curl でファイルをアップロードするには、より多くのオプションを使用する必要があります。ここを参照してください。

CURLOPT_UPLOADオプションと CURLOPT_POSTFIELDS の説明をてください。アップロードするには、ファイル名の前に @ を使用する必要がある (そしてフル パスを使用する) 必要があると書かれています。

于 2012-11-01T19:24:50.437 に答える
0

これらは私が必要とした変更であり、うまくいきました:

$filepath = str_replace('\\', '/', realpath(dirname(__FILE__))) . "/";
$target_path = $filepath . $UploadDirectory . $FileName;
$data = array('name' => 'test', 'file' => '@'.$target_path);
于 2012-11-01T20:12:02.693 に答える