Набросал вот такой скриптик на python. Он читает multipart form-data запрос и запихивает его во временные файлы, выводя их список (тип, название, временный файл), готовый для парсинга в недоязыках вроде bash.
Вот он:
import cgitb
import cgi
import os
import tempfile
# Generator to buffer file chunks
def fbuffer(f, chunk_size=10000):
while True:
chunk = f.read(chunk_size)
if not chunk: break
yield chunk
cgitb.enable()
form = cgi.FieldStorage()
for param in form:
if form[param].filename:
(fd, temp) = tempfile.mkstemp()
f = open(temp, 'wb', 10000)
# Read the file in chunks
for chunk in fbuffer(form[param].file):
f.write(chunk)
f.close()
print "file " + form[param].filename + " " + temp
else:
(fd, temp) = tempfile.mkstemp()
f = open(temp, 'wb', 10000)
# Write param to the file
f.write(form[param].value)
f.close()
print "param " + param + " " + temp
Буду признателен, если кто-нибудь перепишет его на perl или на другом легком интерпретируемом языке. Сам пытался, не получилось, слишком плохо я перл знаю.