Wadslog

[Zend Framework] Zend_Httpを使ってAPIからファイルをアップロードする

Jul 16, 2008

Zend_Httpを使ってAPIからファイルをアップロードするプログラムを作ってみました。 http://example.com/api/file_post というAPIがあって、これを使ってファイルをアップロードすると仮定しています。 コードは以下のようになっています。``` require_once ‘Zend/Http/Client.php’;

$url = “http://example.com/api/file_post”; $filename = “example.jpg”;

$client = new Zend_Http_Client($url); // オプションの設定は省略 $client->setFileUpload($filename, ‘file’, null, ‘image/jpeg’); $response = $client->request(‘POST’);

これだけで完了です。通常のフォームからのアップロードと同様に、サーバのスクリプトから$\_FILES\['file'\] で参照することができます。 Zend\_Http\_ClientのsetFileUpload()関数でアップロードするファイルを設定して、request()関数でHTTPリクエストをかけます。 リファレンスガイドではsubmit()関数を使っていたのですが、そのような関数は定義されていなかったので代わりにrequest()関数を使用しています。 続いて、setFileUpload()関数の引き数について説明します。 最初の引数では、アップロードするファイル名を指定します。ただし、この引数は第3引数の値で内容が変わってきます。 第3引数がnullの場合は、ここで指定されたファイルが実際にアップロードされます。もしnullでない場合はアップロードするときのファイル名としてこの値が使われるだけで、ファイルの内容は第3引数のものが使用されます。 $filename = “text.txt”; $text = “this is upload test”;

$client->setFileUpload($filename, ‘file’, $text, ‘text/plain’); $response = $client->request(‘POST’);

この場合、たとえローカルに別の内容でtext.txtというファイルが存在していても、「this is upload test」という内容で送信されます。 2番目の引数ではフォーム名を指定します。

のxxxにあたる部分ですね。 サーバスクリプト側では $_FILES[‘file’]

comments powered by Disqus