その他
    ホーム 技術発信 DoRuby curl でファイルを送る

    curl でファイルを送る

    この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

    http アクセスを行うコマンドラインツールは telnet, wget, lynx, w3m などあるがリクエスト結果をそのまま標準出力したい場合は curl コマンドが便利かと思っている。ファイルを POST するのも簡単だったので備忘の為、記載する。

     通常の使い方(bash上)

    curl http://host/path/file.ext

    ※ ポストパラメータを渡すときは -F オプションを使う

    e.g.
     のようなフォームで送るパラメータ。 
    
    curl -F "param_name=param_value" curl http://host/path/file.ext

     ファイルを送るとき

    e.g.
     のようなフォームで送るパラメータ。
    
    curl -F "param_file=@file_path" curl http://host/path/file.ext

    簡単でした。@マークをつけてファイルパスを指定するだけ。

     Appendix

    get パラメータを送るときの注意

    ? や & は bash 上で特殊文字として処理されてしまうので URL ごと引用符で囲んでしまいましょう。

    curl "http://host/path/file.ext?a=1&b=2&c=3"

    よく使うオプション

    • -H ヘッダーを設定する。下記では名前解決できないけれど名前バーチャルホストを使用しているサーバへアクセスするときの確認に便利
    • -b 送信するクッキーファイルを指定
    • -c 受信するキッキーを保存するファイルを指定
    • -A ユーザエージェントの書き換え:iphoneやandroidやその他で出力が異なる場合の確認に便利
    • -v リクエストヘッダやレスポンスヘッダを表示
    curl -v -H Host:virtual_host_name http://127.0.0.1/ -b ck0.txt -c ck1.txt -A "oreore_ua"