25.10.2011

Uploadify на Mac OS X

Говорят, что у Mac OS X есть какие-то проблемы с Flash. Или наоборот, что у Flash есть какие-то проблемы с Mac OS X. В общем, есть между ними какие-то трения. Я лично столкнулся с чем-то таким, используя Uploadify. Этот плагин jQuery вносит метод uploadify, который принимает объект опций, среди которых есть scriptData. scriptData - объект, свойства которого будут добавлены к POSTу, когда flash-часть uploadify начнет загружать файл на сервер. В теории и документации вы увидите все, что передали в scriptData, в request.POST (если, конечно, используете Django).

На самом деле все не так. На Mac OS X вы увидите только первое свойство объекта scriptData. Так, если scriptData: {'size': '160x160', 'crop': true}, то вы request.POST будет только size. Обойти это можно так. Вместо {'scriptData': {'foo': 'bar', 'bar': 'foo'} }надо передать {'auto': false, 'onSelect': function(){ $x.uploadifySettings({'foo': 'bar', 'bar': 'foo'}); $x.uploadifyUpload();}}. Здесь $x - тот же объекта, метод котрого uploadify() вы вызываете. Так работает.

Но это не вся правда. в request.POST будет элемент 'foo' и элемент 'amp;bar'. Ну это просто:


if 'amp;crop' in request.POST:
        request.POST['crop'] = request.POST['amp;crop']

Почему так - не знаю. Но надеюсь, что моя небольшая находка сэкономит кому-то (мне) немного времени.

Комментариев нет: