Uploadify Висит наугад на 100% - PullRequest
8 голосов
/ 17 мая 2010

Я использую Uploadify , чтобы мои пользователи могли загружать изображения через мое веб-приложение.

Проблема, с которой я сталкиваюсь, заключается в том, что время от времени (что кажется случайным), когда индикатор выполнения достигает 100%, он «зависает» и ничего не делает.

Мне было интересно, могут ли разработчики, знакомые с uploadify, иметь представление о том, как решить эту проблему? Мне отчаянно нужна помощь.

Вот мой код переднего конца:

<javascript>
jQuery(document).ready(function() {
 jQuery("#uploadify").uploadify({
  'uploader'       : 'javascripts/uploadify.swf',
  'script'         : 'upload-file2.php',
  'cancelImg'      : 'css/images/cancel.png',
  'folder'         : 'uploads/personal_images/' + profileOwner,
  'queueID'        : 'fileQueue',
  'auto'           : true,
  'multi'          : true,
  'fileDesc'       : 'Image files',
     'fileExt'        : '*.jpg;*.jpeg;*.gif;*.png',
  'sizeLimit'      : '2097152',
  'onComplete': function(event, queueID, fileObj, response, data)
  {
   processPersonalImage(fileObj.name);
   arrImgNames.push(fileObj.name);
   showUploadedImages(true);
   document.getElementById("photos").style.backgroundImage = "url('css/images/minicam.png')";
  },
  'onAllComplete'  : function()
  {
     completionMessage(arrFailedNames);
     document.getElementById("displayImageButton").style.display = "inline";
     document.getElementById("photos").style.backgroundImage = "url('css/images/minicam.png')";
  },
  'onCancel'  : function()
  {
     arrImgNames.push(fileObj.name);
     arrFailedNames.push(fileObj.name);
     showUploadedImages(false);
  },
  'onError'  : function()
  {
     arrImgNames.push(fileObj.name);
     arrFailedNames.push(fileObj.name);
     showUploadedImages(false);
  }
 });
});
</javascript>

И на стороне сервера:

 if (!empty($_FILES)) 
 {
  //Get user ID from the file path for use later..
  $userID = getIdFromFilePath($_REQUEST['folder'], 3); 
  $row = mysql_fetch_assoc(getRecentAlbum($userID, "photo_album_personal"));
  $subFolderName = $row['pk'];
     //Prepare target path / file..
  $tempFile = $_FILES['Filedata']['tmp_name'];
  $targetPath = $_SERVER['DOCUMENT_ROOT'] . $_REQUEST['folder'] . '/'.$subFolderName.'/';
  $targetFile =  str_replace('//','/',$targetPath) . $_FILES['Filedata']['name'];
  //Move uploaded file from temp directory to new folder
  move_uploaded_file($tempFile,$targetFile);
  //Now add a record to DB to reflect this personal image..
  if(file_exists($targetFile))
  {
   //add photo record to DB
   $directFilePath = $_REQUEST['folder'] . '/'.$subFolderName.'/' . $_FILES['Filedata']['name'];
   addPersonalPhotoRecordToDb($directFilePath, $row['pk']);
  }
  echo "1";
  die(true);
 }

спасибо за любую помощь !!

Ответы [ 7 ]

2 голосов
/ 20 мая 2010

У меня была похожая проблема некоторое время назад с Uploadify (хотя и с использованием ASP.Net MVC) - но вы наверняка найдете полезную информацию об обработке событий Uploadify и их поведении в опубликованном ответе! Его доступно здесь

2 голосов
/ 17 мая 2010

это похоже на ошибку php. Я бы использовал Fiddler или аналогичную проблему для просмотра ответа php или аналогичного. Проверьте ваши журналы ошибок php, они могут пролить некоторый свет.

1 голос
/ 13 августа 2011

У меня была такая же проблема. Просто добавьте echo "astlavista babi" в ваш скрипт загрузки, этот оператор echo должен быть последней строкой, если у вас есть условный оператор, тогда echo должен быть помещен как последняя строка в условном операторе.

0 голосов
/ 04 марта 2011

Для тех, кто использует Mac, используйте HTTP Scoop , чтобы просмотреть запрос, поскольку Firebug не показывает его. Подробнее об HTTP Scoop из этого блога .

0 голосов
/ 31 января 2011

Для дальнейшего использования: у меня была эта проблема при отправке данных в сценарий загрузки с использованием «scriptData», и я решил ее, просто повторив «ok» в сценарии загрузки вместо отправки пустого документа.

0 голосов
/ 05 августа 2010

Проверьте ваш файл php.ini для параметра post_max_size. Это должен быть параметр> = upload_max_filesize. Подробнее см. http://php.net/post-max-size.

0 голосов
/ 22 июня 2010

Вот шаги, которые я бы сделал по порядку:

1) Будьте на 100% уверены, что получили ответ 200 с вашего сервера. Если нет, то это проблема

2) Используйте последние и самые лучшие uplaodify и jquery

3) Проверка на ошибки JS (будет работать консоль Firebug или отладчик JS браузера)

4) Обновите свой Flash player (если это решит его, тогда вам может потребоваться более высокая версия)

5) Поместите операторы отладки в исходный код uploadify, в частности в завершенный обработчик, чтобы убедиться, что он вызывается

6) Если прогресс достигает 100%, но обработчик не вызывается, я боюсь, что следующим шагом может быть погружение в скрипт действия и использование отладчика или некоторых операторов трассировки, чтобы выяснить, где ошибка. Это может означать, что при вызове функции внешнего интерфейса есть ошибка

7) Если вы делаете исправления, отправьте их обратно для загрузки

...