ホームページ  >  に質問  >  本文

Python のリクエスト ライブラリを使用してファイルをアップロードするにはどうすればよいですか?

<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>
P粉071559609P粉071559609401日前521

全員に返信(2)返信します

  • P粉422227023

    P粉4222270232023-08-17 12:40:36

    (2018) 新しい Python リクエスト ライブラリは、このプロセスを簡素化します。「files」変数を使用して、マルチパートでエンコードされたファイルをアップロードすることを示すことができます

    リーリー

    返事
    0
  • P粉590428357

    P粉5904283572023-08-17 11:32:38

    upload_file がファイルを参照する場合は、次を使用します:

    リーリー

    その後、requests は、file.txt ファイルの内容に設定された upload_file フィールドを含むマルチパート フォームの POST リクエスト本文を送信します。

    ファイル名は特定のフィールドの MIME ヘッダーに含まれます:

    リーリー

    filename="file.txt"パラメータに注意してください。

    さらに制御が必要な場合は、タプルを files マッピング値として使用できます。タプルの長さは 2 ~ 4 である必要があります。最初の要素はファイル名で、その後にコンテンツが続きます。オプションでコンテンツ タイプ ヘッダーと他のヘッダーのマッピングも含まれます。

    リーリー

    これにより、オプションのヘッダーが省略されて、代替のファイル名とコンテンツ タイプが設定されます。

    POST リクエストの本文全体をファイルから取得する場合 (他のフィールドは指定しない)、files パラメーターを使用せず、ファイルを data として直接 POST します。 Content-Type ヘッダーを設定することもできます。そうしないと、ヘッダーは設定されません。 Python リクエスト - ファイルからの POST データを参照してください。

    返事
    0
  • キャンセル返事