如何使用curl上传带文件的表单并流式传输该文件?
我需要通过一个表单上传一个文件。这个表单里还有其他的输入框。
现在我有了:
class FileReader:
def __init__(self, fp):
self.fp = fp
def read_callback(self, size):
return self.fp.read(size)
c = pycurl.Curl()
c.setopt(pycurl.URL, url)
c.setopt(pycurl.UPLOAD, 1)
c.setopt(pycurl.READFUNCTION, FileReader(open(filename, 'rb')).read_callback)
filesize = os.path.getsize(filename)
c.setopt(pycurl.INFILESIZE, filesize)
我在想,怎么才能把其他的输入框和文件一起上传呢?我不太确定,因为我需要使用pycurl.UPLOAD 1。
另外,我该怎么给文件指定一个表单字段的名字呢?
1 个回答
2
这里有一个例子,基于一个pycurl测试的源代码,可能会对你有帮助:
import pycurl
fields = [('field1', 'this is a test using httppost & stuff'),
('field2', (pycurl.FORM_FILE, 'file1.txt', pycurl.FORM_FILE, 'file2.txt')),
('field3', (pycurl.FORM_CONTENTS, 'this is wei\000rd, but null-bytes are okay'))
]
c = pycurl.Curl()
c.setopt(c.URL, 'http://www.example.com')
c.setopt(c.HTTPPOST, fields)
c.perform()
c.close()