<p>Python のリクエスト ライブラリを使用して、ファイルをアップロードするという単純なタスクを実行しています。 Stack Overflow で検索しましたが、ファイルがサーバーに受信されないという同じ問題を抱えている人はいないようです。
<pre class="brush:php;toolbar:false;">インポート リクエスト
url='http://nesssi.cacr.caltech.edu/cgi-bin/getmulticonedb_release2.cgi/post'
files={'files': open('file.txt','rb')}
値={'upload_file' : 'file.txt' 、 'DB':'photcat' 、 'OUT':'csv' 、 'SHORT':'short'}
r=requests.post(url,files=ファイル,data=values)</pre>
<p>「upload_file」キーワードの値にファイル名を入力しました。空白のままにすると、次のようになります。</p>
<pre class="brush:php;toolbar:false;">エラー - アップロードするファイルを選択する必要があります。 </pre>
<p>これで、次のようになります: </p>
<pre class="brush:php;toolbar:false;">ファイル file.txt のサイズはバイトで、正常にアップロードされました。
クエリ サービスの結果: 合計 0 行があります。 </pre>
<p>これはファイルが空の場合にのみ発生します。そのため、ファイルを正常に送信する方法がわかりません。フォームに手動で入力してサイトにアクセスすると、一致するリストが返されるため、ファイルが有効であることがわかります。これはまさに私が望んでいたものです。すべてのヒントに本当に感謝しています。 </p>
<p>関連する他のスレッド (ただし、私の問題は解決しません): </p>
<li>Python スクリプトを使用して POST 経由でファイルを送信します</li>
<li>http://docs.python-requests.org/en/latest/user/quickstart/#response-content</li>
<li>リクエストを使用してファイルをアップロードし、追加データを送信します</li>
<li>http://docs.python-requests.org/en/latest/user/advanced/#body-content-workflow</li>
</ul>
(2018) 新しい Python リクエスト ライブラリは、このプロセスを簡素化します。「files」変数を使用して、マルチパートでエンコードされたファイルをアップロードすることを示すことができます
リーリー
リーリーupload_file
がファイルを参照する場合は、次を使用します:その後、
requests
は、file.txt
ファイルの内容に設定されたupload_file
フィールドを含むマルチパート フォームの POST リクエスト本文を送信します。ファイル名は特定のフィールドの MIME ヘッダーに含まれます:
リーリーfilename="file.txt"
パラメータに注意してください。さらに制御が必要な場合は、タプルを
リーリーfiles
マッピング値として使用できます。タプルの長さは 2 ~ 4 である必要があります。最初の要素はファイル名で、その後にコンテンツが続きます。オプションでコンテンツ タイプ ヘッダーと他のヘッダーのマッピングも含まれます。これにより、オプションのヘッダーが省略されて、代替のファイル名とコンテンツ タイプが設定されます。
POST リクエストの本文全体をファイルから取得する場合 (他のフィールドは指定しない)、
files
パラメーターを使用せず、ファイルをdata
として直接 POST します。Content-Type
ヘッダーを設定することもできます。そうしないと、ヘッダーは設定されません。 Python リクエスト - ファイルからの POST データを参照してください。