Jestem zainteresowany pisaniem krótkiego skryptu Pythona, który przesyła krótki plik binarny (.wav/.raw audio) za pośrednictwem żądania POST do zdalnego serwera.Pliki binarne HTTP POST za pomocą Pythona: zwięzłe przykłady nieprzypisane?
Zrobiłem to z pycurl, co czyni go bardzo prostym i powoduje zwięzły skrypt; niestety wymaga również, aby użytkownik końcowy miał zainstalowany pycurl, na którym nie mogę polegać.
Widziałem również kilka przykładów w innych postach, które opierają się tylko na podstawowych bibliotekach, urllib, urllib2 itp., Ale generalnie wydają się być dość szczegółowe, co jest również czymś, czego chciałbym uniknąć.
Zastanawiam się, czy istnieją jakieś zwięzłe przykłady, które nie wymagają korzystania z zewnętrznych bibliotek i które będą szybko i łatwo zrozumiałe dla osób trzecich - nawet jeśli nie są szczególnie obeznane z pythonem.
Co Używam obecnie wygląda,
def upload_wav(wavfile, url=None, **kwargs):
"""Upload a wav file to the server, return the response."""
class responseCallback:
"""Store the server response."""
def __init__(self):
self.contents=''
def body_callback(self, buf):
self.contents = self.contents + buf
def decode(self):
self.contents = urllib.unquote(self.contents)
try:
self.contents = simplejson.loads(self.contents)
except:
return self.contents
t = responseCallback()
c = pycurl.Curl()
c.setopt(c.POST,1)
c.setopt(c.WRITEFUNCTION, t.body_callback)
c.setopt(c.URL,url)
postdict = [
('userfile',(c.FORM_FILE,wavfile)), #wav file to post
]
#If there are extra keyword args add them to the postdict
for key in kwargs:
postdict.append((key,kwargs[key]))
c.setopt(c.HTTPPOST,postdict)
c.setopt(c.VERBOSE,verbose)
c.perform()
c.close()
t.decode()
return t.contents
to nie jest dokładny, ale daje ogólne pojęcie. Działa świetnie, jest to proste dla osób trzecich, aby zrozumieć, , ale wymaga pycurl.
Powiązane: [Wyślij plik za pomocą POST ze skryptu w języku Python] (http://stackoverflow.com/q/68477/95735) –