2013-12-15 2 views
3

Am использование uploadifive (версии HTML5 не на основе флэша Uploadify) следующим образом:Использования uploadifive для нескольких загрузки файлов причин неоднократных вызовов check_exists

$('#file_upload').uploadifive({ //setup uploadify 
    'auto'    : false, 
    'removeCompleted' : true, 
    'checkScript' : 'check-exists.php', 
    'formData'   : { 
           'timestamp' : '<?php echo $timestamp;?>', 
           'token'  : '<?php echo md5('unique_salt' . $timestamp);?>' 
         }, 
    'queueID'   : 'queue', 
    'uploader'   : 'uploadifive.php', 
    'onUploadFile'  : function(file) { 
          //alert('The file ' + file.name + ' is being uploaded.'); 
         }, 
    'onCheck'   : function(file, exists) { 
          //alert ('onCheck: ' + file.name + '/' + exists); 
         }, 
    'onUploadComplete' : function(file, data) { 
          //alert (file.name + ': ' + data); 
         } 
}); 

С помощью этой простой формы:

<form> 
    <div id="queue"></div> 
    <input id="file_upload" name="file_upload" type="file"> 
    <a style="position: relative; top: 8px;" href="javascript:$('#file_upload').uploadifive('upload')">Upload Files</a> 
</form> 

Если я загружаю один или два файла в пустую папку, все работает нормально.
Если я загружаю 3 или более, я получаю переменное количество повторных вызовов check_info.php. Например, если я загружу пять файлов в пустую папку, в соответствии с firebug есть 15 вызовов check_info.
1 для файла 1, возвращает 0 (т.е. файл не существует)
2 для файла 2, оба возвращают 0
3 для файла 3, все возвращают 0
4 для файла 4, 1 возвращает 0 и 3 возвратного 1 (т. е. файл существует)
5 для файла 5, 2 return 0, 3 return 1
Множественные возвраты 0 Я могу жить с (хотя это очень неэффективно), поскольку они невидимы для пользователя, но 6 возвратов 1 , каждый генерирует предупреждающий msg, на который пользователь должен ответить.
Я понятия не имею, почему это происходит. Посмотрите на код uploadifive, но это далеко за пределами моего ограниченного знания jQuery.
Цените любые советы/предложения/лекарства/и т.д.
Tx заранее

+0

Обновите свои теги, если возможно, с более релевантными тегами. Это может привлечь больше людей к вашему вопросу. – AtanuCSE

ответ

2

я столкнулся с этим во время тестирования, а также. Я исправил это, изменив исходный код ... вам нужно будет искать комментарий «// Loop через файлы», чтобы найти, куда он идет. В принципе, я просто запускаю два цикла ... один для проверки, а другой для загрузки, чтобы избежать конфликтов.

// Loop through the files to run check scripts first... 
if (settings.checkScript) { 
    $('#' + settings.queueID).find('.uploadifive-queue-item').not('.error, .complete').each(function() { 
     _file = $(this).data('file'); 
     if (typeof _file.skipFile === 'undefined') { 
      _file.skipFile = $data.checkExists(_file); 
     } 
    }); 
} 
// Loop through the files for uploading... 
$('#' + settings.queueID).find('.uploadifive-queue-item').not('.error, .complete').each(function() { 
    _file = $(this).data('file'); 
    // Check if the simUpload limit was reached 
    if (($data.uploads.current >= settings.simUploadLimit && settings.simUploadLimit !== 0) || ($data.uploads.current >= settings.uploadLimit && settings.uploadLimit !== 0) || ($data.uploads.count >= settings.uploadLimit && settings.uploadLimit !== 0)) { 
     return false; 
    } 
    if (!_file.skipFile) { 
     $data.uploadFile(_file, true); 
    } 
}); 

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

+0

Это решило проблему. И я был близок к покупке коммерческой лицензии ... Фу. В любом случае [email protected] не существует, он возвращает почту обратно. – kosmos

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