CURLデータに「catファイル」を挿入

CURLデータに「catファイル」を挿入

aの内容をキャプチャして、カールクエリでフィールドの一部としてfile.txt使用したいと思います。--data

私は試した:

curl ... --data '{ "file_content":[" $(cat file.txt) ", ...]}"' ...

$(cat file.txt)ただし、これは文字列を送信する前に解釈するのではなく、サーバーに文字列を渡します。

私も次のことを試しました。

curl ... --data '{ "file_content":[" `cat file.txt` ", ...]}"' ...

同様に、文字列を解釈する代わりにそのまま渡します。

答え1

方程式からシェルを削除できる場合は、おそらく3つのバックスラッシュは必要ありません。幸いなことに、次のことができます。

{   printf '{ "file_content":["'
    cat file.txt
    printf '", ...]}"'
}|  curl ... --data-binary @-          

よりman curl。違いに注意を払うことをお勧めします。--data-ascii (それは-d私のことです)、、、--data-binaryそして--data-urlencoded

答え2

curl -d "$(cat /path/to/my/file.txt)" -X POST http://<your_base_URL>/api/v1/endpoint

これをテストしましたが、うまくいきます。 file_contentキーにすべての内容を入力するには、編集中のファイルに複数の引用符が含まれる可能性があるため、引用に注意する必要があります。

関連情報