Python 2.6 - Загрузить zip-файл - Постер 0.4 - PullRequest
0 голосов
/ 25 июня 2009

Я пришел сюда через этот вопрос: Отправка файла с использованием POST из скрипта Python

И по большому счету это то, что мне нужно, плюс некоторые дополнительные.

Помимо сома zipfile необходима дополнительная информация, а POST_DATA выглядит примерно так:

POSTDATA =-----------------------------293432744627532
Content-Disposition: form-data; name="categoryID"

1
-----------------------------293432744627532
Content-Disposition: form-data; name="cID"

-3
-----------------------------293432744627532
Content-Disposition: form-data; name="FileType"

zip
-----------------------------293432744627532
Content-Disposition: form-data; name="name"

Kylie Minogue
-----------------------------293432744627532
Content-Disposition: form-data; name="file1"; filename="At the Beach x8-8283.zip"
Content-Type: application/x-zip-compressed

PK........................

Возможно ли это как-то с модулем poster 0.4 (и прежде чем вы спросите, да, я довольно новичок в Python ...)

С уважением, Брайан К. Андерсен

1 Ответ

4 голосов
/ 25 июня 2009

Плакат имеет базовую и расширенную поддержку нескольких частей.
Вы можете попробовать что-то вроде этого (модифицировано из постерной документации):

# test_client.py
from poster.encode import multipart_encode
from poster.streaminghttp import register_openers
import urllib2

# Register the streaming http handlers with urllib2
register_openers()

# headers contains the necessary Content-Type and Content-Length
# datagen is a generator object that yields the encoded parameters
datagen, headers = multipart_encode({
    'categoryID' : 1,
    'cID'        : -3,
    'FileType'   : 'zip',
    'name'       : 'Kylie Minogue',
    'file1'      : open('At the Beach x8-8283.zip')
})

# Create the Request object
request = urllib2.Request("http://localhost:5000/upload_data", datagen, headers)

# Actually do the request, and get the response
print urllib2.urlopen(request).read()
...