このように:
猫tmp.txt |カール --postdomain.com/file-to-store
端末のみを使用して、自分のコンピュータのtmp.txtコンテンツをサーバーに保存したいと思います。可能ですか?
答え1
HTTPプロトコルを使用してサーバーにファイルをアップロードしたり、curl
コマンドラインからそれを実行したりできます。
ただし、この機能を機能させるには、ファイルのアップロードをサポートするHTTPサーバーが必要です(ローカルまたはそのサーバーで実行されているアプリケーションを介して)。この機能を有効にして設定するには、一般的に間違いを防ぐための一種の認証/許可が必要です。あなたのサーバーにアップロードされます。 WebサーバーまたはWebアプリケーションがアップロードされたファイルを受信したときにローカルファイルシステムに書き込むことができるように、ファイルとディレクトリの権限を処理する必要があるかもしれません。
すべてが準備されたら、curl
HTTPを使用してファイルをアップロードする2つの方法があります。
- 配置方法:
これはファイルをアップロードするための基本的な「動詞」です。 1つの利点は、アップロードに使用するURLが、アップロード後にアップロードされたファイルに使用できるURLと一致することです。ただし、上記のように、この方法を使用してファイルをアップロードすることが正常に機能するには、サーバーがサポートする必要があります。
これがオプションの場合は、次の構文を使用してください。
cat tmp.txt | curl -T - domain.com/file-to-store
- メーリング方法:
これは、ファイルアップロードを実装できるWebサーバーで実行されているアプリケーションを呼び出す方法です。この場合、アプリケーション自体のURLを呼び出す必要があるため、通常は予想されるターゲットURLを指定する必要があります。または、ファイル名は次のようになります。 POST要求に渡された別々のパラメータ(「フィールド」)でエンコードされます。
このアプローチの一つの利点は通常PUT要求を受け入れるようにWebサーバーを構成するよりも、サーバーにファイルアップロードアプリケーションをインストールして構成する方が簡単です(これを行うためにCGIプロトコルを使用する簡単なソリューションがたくさんあります)。
オプションがある場合は、次の構文を使用してください。
curl -F [email protected] -F url=/file-to-store domain.com/fileupload.cgi
上記の例は文字通りではなく、仮想ファイルアップロードアプリケーションの例にすぎません。実際の詳細は、使用することを決定したファイルアップロードアプリケーションによって異なります。この例の目的は、カールの-F
パラメータを使用する方法と、@
それを使用するときにローカルファイルの内容を含める方法を説明することです。
よりカールマニュアル詳細については、特にPUTメソッドを説明する「アップロード」セクションを参照してください。また、POSTをオプションとして使用していると言います。