Вопрос: а размер архива какой? Первое что приходит в голову — он превышает размеры, указанные в директивах PHP max_upload_size и max_post_size.
Дальше, вместо sizeof($_FILES) лучше использовать !empty($_FILES['archive'])
А также сделать в конце print_r($_FILES), и посмотреть ее вывод, чтобы понять, в чем вообще проблема.
P.S. Полагаться на переданный пользователем type — не самая лучшая идея с точки зрения безопасности. (Впрочем, в данном конкретном случае это не критично.)