2012-06-19 5 views
-1

Я использую Uploadify для загрузки изображения в php (codeigniter). Протестировано с образцом php-файла, который поставляется с пакетом uploadify. Оно работает. Однако я не могу запустить onUploadError. Код PHP образец имеет:uploadify: ограничить размер изображения

if (in_array($file_ext,$fileTypes)) { 
    $newFileName = mt_rand() . time() . '.' . $file_ext; 
    $targetFile = rtrim($targetPath,'/') . '/' . $newFileName; 
    move_uploaded_file($tempFile,$targetFile); 
    echo $newFileName; 
} else { 
    echo 'Invalid file type.'; 
} 

JS очень проста следующим образом:

$('#file_upload').uploadify({ 
     'fileTypeDesc' : 'Image Files', 
     'fileTypeExts' : '*.gif; *.jpg; *.jpeg; *.png', 
     'swf'  : '/static/uploadify/uploadify.swf', 
     'uploader'  : '/static/uploadify/uploadify.php', 
     'onUploadError' : function(file, errorCode, errorMsg, errorString) { 
      console.log('The file ' + file.name + ' errorCode ' + errorCode + ' errorMsg ' + errorMsg + ' errorString ' + errorString); 
     }, 
     'onUploadSuccess' : function(file, data, response) { 
      console.log(data); 
     } 
    }); 

когда Invalid file type. вторит в веб-интерфейсе. запускается onUploadSuccess вместо onUploadError. Мне кажется странным, что нет никакого индикатора для добавления в stell, есть ошибка от php.

Единственный способ, который запускает onUploadError, заключается в том, чтобы установить HTTP-заголовок не 200, прежде чем эхо. однако onUploadError аргументы функции errorCode, errorMsg, errorString - это http-код, а содержимое эха (сообщение об ошибке) теряется.

ОБНОВЛЕНИЕ

Я изменил заголовок вопроса, так это говорит о реальных проблемах я пытался решить. И с тех пор я нашел решение.

+0

Came здесь ищет размерной изображение решения, только чтобы найти, что это не реальная тема вопроса. –

ответ

0

Я наконец-то получил решение этой проблемы, и вот мои шаги по ее решению.

первых, проблема onUploadError не уволили потому, что файл был загружен успешно

второй, Uploadify предел очереди и лимит загрузки обновляются соответствующим образом при успешной загрузке независимо от обнаружения неправильного измерения изображения из внутреннего интерфейса.

Таким образом, решение заключается в том, что мой бэкэнд проверяет размер изображения и отвечает данными json с сообщением об ошибке, которое отображается пользователю. также сбросить загрузку, действительно это swfupload, переменная successful_uploads. что гарантирует, что ограничение начисления или выгрузки не будет испорчено. Пример кода:

'onUploadSuccess' : function(file, data, response) { 
    var obj = eval('(' + data + ')'); 
    if (obj.success) { alert('uploaded') } 
    else { 
     var stats = this.getStats(); 
     this.setStats({successful_uploads: stats.successful_uploads - 1}); 
    } 
} 

см метод SWFUpload setStats http://demo.swfupload.org/Documentation/#setStats

Смежные вопросы