LoginSignup
4
3

More than 5 years have passed since last update.

FuelPHP Request_Curlでファイルアップロードをする

Posted at

はじめに

FuelPHP標準のRequest_Curlでファイルアップロードをする機会があったのでそのサンプルになります。他でやればいいのですが、標準使いたかったので調べました。
Curlの場合@を使用すればファイルアップロードになるはずなのですができなかったので微妙にはまりました。

環境
FuelPHP 1.7
PHP 5.6.18

概要

  1. ソース作成
  2. 実行

詳細


1. ソース作成

ソースを作成します。

namespace Fuel\Tasks;

class UploadTest {

    public function run() {
        $params = array(
            'post_param1'   => 'データ1'
        ,   'fileupload'    => \CURLFile(dirname(__FILE__)."/upload.csv");
        );
        $postparam  = array(
            'form-data'     => $params
        );

        $curl       = \Request::forge($url, 'curl');
        $curl->set_method('post');
        $curl->set_params($postparam);
        $curl->set_option(CURLOPT_RETURNTRANSFER,true); 
        $curl->set_option(CURLOPT_BINARYTRANSFER,true);
        $curl->set_header('Content-Type','multipart/form-data');
        $execResult = $curl->execute();
        $response   = $execResult->response();
        $result     = $response->body;
        print_r($result);
    }
}

2. ソース作成

実行します。

$oil refine UploadTest

あとがき

set_optionでCURLOPT_RETURNTRANSFERはソースを見るとCURLOPT_つけている感じなので文字列で指定する場合はRETURNTRANSFERでも良いかもしれません。

curl.php

    public function set_options(array $options)
    {
        foreach ($options as $key => $val)
        {
            if (is_string($key) && ! is_numeric($key))
            {
                $key = constant('CURLOPT_' . strtoupper($key));
            }

            $this->options[$key] = $val;
        }

        return $this;
    }

その他

参考
PHPでcURLのクソ仕様 "@" を回避する

4
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3