Bagaimana untuk memuat naik fail menggunakan perpustakaan permintaan Python?
P粉071559609
P粉071559609 2023-08-16 18:44:37
0
2
517
<p>Saya menggunakan perpustakaan permintaan Python untuk melaksanakan tugas mudah, iaitu memuat naik fail. Saya telah mencari di Stack Overflow dan tiada siapa yang nampaknya mengalami masalah yang sama, di mana fail tidak diterima oleh pelayan: </p> <pre class="brush:php;toolbar:false;">permintaan import url='http://nesssi.cacr.caltech.edu/cgi-bin/getmulticonedb_release2.cgi/post' files={'files': open('file.txt','rb')} values={'upload_file' : 'file.txt' , 'DB':'photcat' , 'OUT':'csv' , 'SHORT':'short'} r=requests.post(url,files=files,data=nilai)</pre> <p>Saya mengisi nilai kata kunci 'upload_file' dengan nama fail saya kerana jika saya biarkan kosong ia akan berbunyi: </p> <pre class="brush:php;toolbar:false;">Ralat - Anda mesti memilih fail untuk dimuat naik! </pra> <p>Sekarang saya mendapat: </p> <pre class="brush:php;toolbar:false;">Saiz fail.txt ialah bait, berjaya dimuat naik! Keputusan perkhidmatan pertanyaan: Terdapat 0 baris secara keseluruhan. </pra> <p>Ini hanya berlaku jika fail kosong. Jadi saya tidak tahu bagaimana untuk menghantar fail saya dengan jayanya. Saya tahu fail itu sah kerana jika saya mengisi borang secara manual dan melawati tapak, ia mengembalikan senarai padanan yang bagus, iaitu apa yang saya mahukan. Saya sangat menghargai semua petua. </p> <p>Beberapa utas lain yang berkaitan (tetapi jangan selesaikan masalah saya): </p> <ul> <li>Gunakan skrip Python untuk menghantar fail melalui POST</li> <li>http://docs.python-requests.org/en/latest/user/quickstart/#response-content</li> <li>Gunakan permintaan untuk memuat naik fail dan menghantar data tambahan</li> <li>http://docs.python-requests.org/en/latest/user/advanced/#body-content-workflow</li> </ul><p><br /></p>
P粉071559609
P粉071559609

membalas semua(2)
P粉422227023

(2018) Pustaka permintaan Python baharu memudahkan proses ini, kita boleh menggunakan pembolehubah 'fail' untuk menunjukkan bahawa kita ingin memuat naik fail berkod berbilang bahagian

url = 'http://httpbin.org/post'
files = {'file': open('report.xls', 'rb')}

r = requests.post(url, files=files)
r.text
P粉590428357

Jika upload_file merujuk kepada fail, gunakan:

files = {'upload_file': open('file.txt','rb')}
values = {'DB': 'photcat', 'OUT': 'csv', 'SHORT': 'short'}

r = requests.post(url, files=files, data=values)

Kemudian permintaan akan menghantar badan permintaan POST borang berbilang bahagian dengan requests将发送一个多部分表单POST请求体,其中upload_file字段设置为file.txtmedan ditetapkan kepada kandungan fail file.txt.

Nama fail akan disertakan dalam pengepala mime medan tertentu:

>>> import requests
>>> open('file.txt', 'wb')  # 创建一个空的演示文件
<_io.BufferedWriter name='file.txt'>
>>> files = {'upload_file': open('file.txt', 'rb')}
>>> print(requests.Request('POST', 'http://example.com', files=files).prepare().body.decode('ascii'))
--c226ce13d09842658ffbd31e0563c6bd
Content-Disposition: form-data; name="upload_file"; filename="file.txt"


--c226ce13d09842658ffbd31e0563c6bd--

Sila beri perhatian kepada filename="file.txt"parameter.

Jika anda memerlukan lebih kawalan, anda boleh menggunakan tupel sebagai filesnilai peta, panjang tupel hendaklah antara 2 dan 4. Elemen pertama ialah nama fail, diikuti dengan kandungan, secara pilihan termasuk pemetaan pengepala jenis kandungan dan pengepala lain:

files = {'upload_file': ('foobar.txt', open('file.txt','rb'), 'text/x-spam')}

Ini akan menetapkan nama fail alternatif dan jenis kandungan, mengetepikan pengepala pilihan.

Jika anda mahu keseluruhan isi permintaan POST datang daripada fail (tiada medan lain dinyatakan), jangan gunakan parameter files参数,直接将文件作为data进行POST。您可能还希望设置一个Content-Type dan POS fail terus sebagai data. Anda juga mungkin mahu menetapkan pengepala Content-Type, jika tidak, tiada pengepala akan ditetapkan. Lihat Permintaan Python - SIARAN data daripada fail.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!