5

ここで少し問題があります。リクエストにファイルを添付するように具体的に cURL に指示するにはどうすればよいですか?

cURL を使用してファイルをアップロードする場合、一般的な方法は、POST データ配列の一部として、その前に @ を持つ値を付けて添付することです。次に例を示します。

CURLOPT_POSTFIELDS=>array('my-file'=>'@my-file.txt')

これは明らかに機能しますが、2 つの問題があります。

  • 実際にアップロードしているファイルではない場合はどうなりますか? POST 値が実際には '@my-file.txt' であり、代わりにファイルをアップロードしようとした場合はどうなりますか? それは私が必死に避けようとしている抜け穴を作り出します.
  • URL からファイルをアップロードするにはどうすればよいですか? ダウンロードして一時フォルダーに保存し、その一時フォルダーから@を付けて添付する必要がありますか? ファイルとして使用したいコンテンツだけを cURL に渡せないのはなぜですか?

cURL CURLOPT_INFILE は $_FILES 配列の一部として表示されないため、オプションではありません。

POST フィールド値の @ 記号に依存する cURL の抜け穴のようです。それを回避する方法はありますか?CURLOPT_FILEFIELDS 配列がないのはなぜですか? コマンドライン cURL には、このための別のフラグ (-F) がありますが、何らかの理由で PHP のオプションとして表示されません。

どんな助けでも大歓迎です、ありがとう!

4

2 に答える 2

1

私がやったのは、入力データのいずれかが @ 記号で始まっているかどうかを検出し、それらがあった場合は、それらを GET 変数として (cURL の送信 URL の一部として) 送信することです。すべてのケース (@ で始まる大きな文字列が送信された場合など) に役立つわけではありませんが、Twitter ハンドルで発生していた問題は解消されます。

于 2012-08-23T10:23:11.277 に答える