Bir dosyanın içeriğini CURL ile POSTing


15

(Aşağıdakiler geriye dönüktür, isterseniz "Soru:" seçeneğine atlayabilirsiniz)

Kurslarımdan biri için giriş metnini kabul eden (Python kodu olması bekleniyor) ve ardından bazı tokenleştirilmiş yanıtlar veren bir web sayfası var . Yazdığımız Python lexers için bir referans olarak kullanılması gerekiyordu. Test sürecimi otomatikleştirmeye çalışıyorum ve bir tarayıcı açmadan, metni ileri geri kopyalamadan vb.Kodumu kontrol edebiliyorum. İşte yapmaya çalıştığım şey:

Ben "x.py" adlı örnek bir python dosyası var ve ben bu formu doldurmuş gibi sunucuya göndermek istiyorum. Denedim:

curl --data-urlencode "file=@x.py" http://matt.might.net/apps/pylex/pylex.php

Ancak ne yazık ki, bu doğru çalışmıyor çünkü "@x.py"dosya içeriğim olarak yayınlanıyor (yani "file=@x.py"yayınlanmıyor, değil "file=<contents-of-x.py>"). Denedim --formve --dataancak bu ikisinden biri çalışmadım.

Soru: Özellikle, url ile kodlanmamış içeriğe sahip bir dosyam varsa ve bu dosyanın içeriğinin POST'un bir parçası olması ve belirli bir adla (bu durumda file) ilişkilendirilmesi gerekiyorsa, bunu gerçekleştirmenin doğru yolu nedir? ?



Bunu neden cevap olarak göndermiyorsun? Kendi sorunuzu cevaplayabilirsiniz ve daha sonra ~ 2 gün içinde ya da bir şey (ne kadar sürdüğünden emin değilsiniz) kabul edebilirsiniz.
BenjiWiebe

@BenjiWiebe: Tamam, göndereceğim.
Cornstalks

Yanıtlar:


25

Ne istiyorsun "file@x.py"(hayır =).

Gönderen curl man :

name @ filename Bu, belirli bir dosyadan (yeni satırlar dahil) curl load verilerini yapar, URL'yi bu verileri kodlar ve POST'ta aktarır. Ad kısmına eşit bir işaret eklenir ve sonuç ad = urlencoded-file-content olur. Adın zaten URL kodlamalı olması gerektiğini unutmayın.


2

Qmega'nın cevabını kabul edilen cevap olarak bırakacağım, ancak daha kolay okumak için burada bir yorumda bıraktığım bir cevap koyacağım. Bunu yapmanın diğer bir yolu da sadece belirtmektir "file=`cat x.py`". Tam komut için:

curl --data-urlencode "file=`cat x.py`" http://matt.might.net/apps/pylex/pylex.php
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.