Red de conocimiento informático - Conocimiento del nombre de dominio - Cómo cargar un archivo al servidor usando http python

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"

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: