Cómo cargar un archivo al servidor usando http python
En primer lugar, la definición del protocolo HTTP estándar para cargar archivos y otros formularios está aquí: wwwietforg/rfc/rfc1867txt El formato aproximado del paquete de datos es el siguiente:
Archivo único :
Tipo de contenido: multiparte/datos de formulario, límite=AaB03x
--AaB03x
disposición-de contenido: nombre-datos="campo1; "
Joe Blow
--AaB03x
disposición-de-contenido: datos-formulario; nombre="pics"; nombredearchivo="archivo1.txt" p>
Tipo de contenido: texto/sin formato
... contenido del archivo1.txt...
--AaB03x--
Múltiple archivos:
Tipo de contenido: multiparte/datos de formulario, límite=AaB03x
--AaB03x
disposición de contenido: nombre de datos de formulario="; field1"
Joe Blow
--AaB03x
disposición-de-contenido: datos-de-formulario; nombre="pics"
Contenido- tipo: multiparte/mixto, límite= BbC04y
--BbC04y
Disposición de contenido: archivo adjunto; nombre de archivo="file1.txt"
En segundo lugar, varias formas para cargar archivos en Python:
p>1 Encapsula el paquete HTTP POST tú mismo:/questions/680305/using-multipartposthandler-to-post-form-data-with-python
importar httplibimport mimetypesdef post_multipart(host, selector, campos, archivos): content_type, body = encode_multipart_formdata(campos, archivos) h = httplib.HTTP(host) h.putrequest('POST', selector) h.putheader('content-type ', content_type) h.putheader(' content-length', str(len(body))) h.endheaders() h.send(body) errorcode, errmsg, headers = h.getreply() return h.file.read () def encode_multipart_formdata(campos, archivos): LIMIT = '----------lImIt_of_THE_fIle_eW_$'
CRLF = '\r\n' L = [] para (clave, valor) en los campos: L.append('--' LIMIT) L.append('Content-Disposition: form-data; name="s"' clave) L.append('') L.append(valor) para (clave, nombre de archivo, valor) en archivos: