Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimana untuk Menghantar Data Borang Berbilang Bahagian dengan Fail dan Data Borang Standard dalam Python?

Bagaimana untuk Menghantar Data Borang Berbilang Bahagian dengan Fail dan Data Borang Standard dalam Python?

Patricia Arquette
Patricia Arquetteasal
2024-12-25 07:51:12596semak imbas

How to Send Multipart Form Data with Files and Standard Form Data in Python?

Cara Membina Permintaan Data Borang Berbilang Bahagian dalam Python

Soalan: Bagaimanakah saya boleh menghantar data borang berbilang bahagian dalam Python menggunakan perpustakaan permintaan? Walaupun saya memahami cara untuk melampirkan fail, saya sedang bergelut untuk memasukkan data borang standard ke dalam permintaan sedemikian.

Jawapan:

Permintaan mengendalikan data borang berbilang bahagian secara automatik apabila fail parameter ditentukan, menghasilkan permintaan POST berbilang/borang-data dan bukannya aplikasi/x-www-form-urlencoded POST.

Sintaks:

from requests import post

response = post(
    url,
    files={
        "form_field_name": "form_field_value",     # No quotes needed for non-string values
    }
)

Contoh:

response = post("http://httpbin.org/post", files={"foo": "bar"})
assert response.status_code == 200

Kawalan Lanjutan:

Gunakan tupel untuk menyesuaikan nama fail, jenis kandungan dan tambahan tajuk untuk setiap bahagian. Komponen Tuple termasuk:

  • Nama fail (pilihan)
  • Kandungan
  • Jenis kandungan (pilihan)
  • Kamus pengepala (pilihan)

Contoh:

files = {"foo": (None, "bar")}   # No filename specified

Tempahan Medan Berbilang:

Gunakan senarai tupel untuk tertib atau berbilang medan dengan medan yang sama name.

Mengendalikan Data dan Fail:

Apabila menggunakan kedua-dua data dan fail, parameter data rentetan akan diutamakan. Jika tidak, kedua-dua data dan fail digabungkan dalam permintaan.

Pustaka Pilihan:

Projek requests-toolbelt menyediakan sokongan Berbilang Bahagian lanjutan, membenarkan:

  • Menstrim daripada objek fail
  • Tiada nama fail lalai parameter
  • Nama fail tersuai, jenis mim bahagian dan pengepala tambahan menggunakan tupel

Contoh dengan tali pinggang alat permintaan:

import MultipartEncoder from requests_toolbelt

fields = {
    "foo": b"bar",    # Fields support bytes objects
    "spam": ("spam.txt", open("spam.txt", "rb"), "text/plain")   # Stream files
}

mp_encoder = MultipartEncoder(fields)

response = post(
    url,
    data=mp_encoder,
    headers={"Content-Type": mp_encoder.content_type}
)

Nota: Untuk kaedah requests-toolbelt, jangan gunakan files= argument sebagai MultipartEncoder disiarkan sebagai muatan data.

Atas ialah kandungan terperinci Bagaimana untuk Menghantar Data Borang Berbilang Bahagian dengan Fail dan Data Borang Standard dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn