Пирамида: каков аналог php $ _FILES ['Filedata'] ['file_name']? - PullRequest
1 голос
/ 23 января 2012

Мне нужно знать это, чтобы правильно получать данные файла из словаря POST.

Я хочу использовать Agile Uploader (изменяет размеры изображений на стороне клиента перед загрузкой на сервер) в моем проекте.Он имеет файл process.php в качестве примера обработки изображения на сервере.В этом файле:

$tmp_name = $_FILES["Filedata"]["file_name"];     // where "tmp_name" is file name

Поскольку у Pyramid нет словаря FILES, я предлагаю найти изображение в POST.Но когда я пытаюсь загрузить изображение POST пусто ...

Так куда оно отправляет это изображение и как его найти на стороне сервера?

HTML (большая часть HTML-кода взятаиз их demo ):

<form action="/test" method="post" id="singularDemo" enctype="multipart/form-data">
    <div id="single"></div>
</form>

<a href="#" onClick="document.getElementById('agileUploaderSWF').submit();">Submit</a>
<script type="text/javascript">
    $('#single').agileUploaderSingle({
        submitRedirect:'',
        formId:'singularDemo',
        progressBarColor:'#3b5998',
        flashVars:{
            firebug:true,
            form_action:'/test'
        }
    });
</script>

Python (код Пирамиды), просто для тестирования - простой вид:

def test(request):
    if request.method == 'POST':
        pass

    return {}

Спасибо!

1 Ответ

4 голосов
/ 23 января 2012

Поскольку глобал $_FILES содержит файлы, отправленные по запросу POST, вы можете получить к ним доступ, используя request.POST:

# access the filename
filename = request.POST['Filedata'].filename

# access the actual file
input_file = request.POST['Filedata'].file

Это точный эквивалент переменной PHP $_FILES,поэтому, если это не работает, что-то еще должно быть не так.

В кулинарной книге Pyramid есть дополнительная информация о загрузке файлов.

...