Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > JavaScript, Ajax
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.02.2012, 15:30   #1
Wicort
Форумчанин
 
Аватар для Wicort
 
Регистрация: 04.08.2009
Сообщений: 684
По умолчанию Проверить существование файла на сервере

Подскажите, пожалуйста, как можно на JavaScript проверить существование файла на сервере?
Суть в следующем: JS-код должен подсунуть в img.src путь к картинке, если она существует. Если же ее нет, то нужно подкинуть путь до дефолтовой картинки.
Нарыл только способ через FileSystemObject, но это на локальной машине.
Еслия Вам помог, не поленитесь нажать на весы и оставить отзыв. Это не займет много времени, но даст понять, что я старался не зря =)
Мой ник зарегистрирован, а твой?
Wicort вне форума Ответить с цитированием
Старый 01.02.2012, 15:37   #2
MadReason
Ищу работу
Форумчанин
 
Аватар для MadReason
 
Регистрация: 16.02.2007
Сообщений: 269
По умолчанию

Код:
function defimg()
{
  $('img').error(function() {
    $(this).attr("src","def.png");
});
}
типа того. через jquery. укажи только нужный селектор. в данном случае для всех картинок, если они не найдены, указывается путь def.png

по такому же принципу можешь сделать на чистом js.
Пишу на Delphi все что угодно, недорого, красиво, с комментариями
###icq 107335###
MadReason вне форума Ответить с цитированием
Старый 01.02.2012, 15:58   #3
Wicort
Форумчанин
 
Аватар для Wicort
 
Регистрация: 04.08.2009
Сообщений: 684
По умолчанию

У меня сейчас сделано так же. Картинка меняется раз в секунду, в результате если не может подргузить изображение, происходит моргание. Заказчик требует сделать без моргания. Потому и хочу перед присвоением src проверять существование файла
Еслия Вам помог, не поленитесь нажать на весы и оставить отзыв. Это не займет много времени, но даст понять, что я старался не зря =)
Мой ник зарегистрирован, а твой?

Последний раз редактировалось Wicort; 01.02.2012 в 16:51.
Wicort вне форума Ответить с цитированием
Старый 01.02.2012, 20:09   #4
MadReason
Ищу работу
Форумчанин
 
Аватар для MadReason
 
Регистрация: 16.02.2007
Сообщений: 269
По умолчанию

наверное, будет лучше, если делать проверку на существование файлов на стороне сервера, и выдавать список всех валидных картинок, как вариант через ajax.

с дефолтной картинкой тоже беда, и она ведь может неожиданно исчезнуть)
Пишу на Delphi все что угодно, недорого, красиво, с комментариями
###icq 107335###
MadReason вне форума Ответить с цитированием
Старый 01.02.2012, 22:50   #5
Cronos20
Форумчанин
 
Регистрация: 08.07.2010
Сообщений: 679
По умолчанию

Есть идея, но не пробовал, вставлять картинку в скрытый блок и у img проверять свойство width или height на 0 , если все хорошо, то показать блок
А вообще чтобы не мерцало, нужно готовить очередь картинок для показа заранее, например подгружать на 3-4 позиции вперед динамически

Последний раз редактировалось Cronos20; 01.02.2012 в 22:52.
Cronos20 вне форума Ответить с цитированием
Старый 02.02.2012, 01:19   #6
MadReason
Ищу работу
Форумчанин
 
Аватар для MadReason
 
Регистрация: 16.02.2007
Сообщений: 269
По умолчанию

Код:
		function exist()
		{
			$.ajax({
				url: "1.jpg",
				dataType:"text",
				cache: false,
				success: function(){ alert("exists");},
				error: function(){ alert("NOT exists");}
		  });
		}
ну вот так еще извернуться можно)

но это как то "нездорово") слишком много лишних запросов будет.
Пишу на Delphi все что угодно, недорого, красиво, с комментариями
###icq 107335###

Последний раз редактировалось MadReason; 02.02.2012 в 01:25.
MadReason вне форума Ответить с цитированием
Старый 02.02.2012, 09:10   #7
Wicort
Форумчанин
 
Аватар для Wicort
 
Регистрация: 04.08.2009
Сообщений: 684
По умолчанию

Цитата:
наверное, будет лучше, если делать проверку на существование файлов на стороне сервера, и выдавать список всех валидных картинок, как вариант через ajax.
Слишком много запросов получится на сервер.
Опишу ситуацию более подробно: мне нужно вывести трансляцию с IP-камеры на сайт. Камера кидает на сервер каждую секунду картинку.
Соответственно, я эти картинки считываю через JS и каждую секунду меняю на сайте. Если удалось считать изображение, я его сую в beforeImg. Если не удалось считать, на onError в картинку подсовываю последний beforeImg.

Цитата:
А вообще чтобы не мерцало, нужно готовить очередь картинок для показа заранее, например подгружать на 3-4 позиции вперед динамически
Дело в том, что камеры в режиме охраны, т.е. включаются только на движение. Соответственно, если пол часа нет движения, то пол часа нет новых кадров. Потому загружать по 3-4 не имеет смысла. На этот случай каждый последний кадр, снятый камерой называется last.jpg, именно его я и подтягиваю.
Цитата:
ну вот так еще извернуться можно)

но это как то "нездорово") слишком много лишних запросов будет.
Спасибо за предложенные решения, но сделал по-своему - без аякса.
Сделал что-то типа двойной буферизации
в коде создаю еще один Image и пытаюсь загрузить изображение в него. Если загрузилось, то это же изображение пихаю в отображаемый имейдж. Если не загрузилось, в отображаемое кидаю beforeImg.
Что-то вроде такого:
Код:
       var buf_img = document.createElement('img');
       buf_img.src = src + "/"+h+"_"+m+"_"+s+".jpg";
       buf_img.onload = function() {
          if(!camLoad[id]) return;
          img.src = buf_img.src;
       }
       buf_img.onerror = function() {
            if(!camLoad[id]) return;
            img.src = before_img[id];
       }
Здесь id - идентификатор камеры, ибо их несколько.
Еслия Вам помог, не поленитесь нажать на весы и оставить отзыв. Это не займет много времени, но даст понять, что я старался не зря =)
Мой ник зарегистрирован, а твой?
Wicort вне форума Ответить с цитированием
Старый 04.05.2012, 22:51   #8
vlsopin
 
Регистрация: 16.10.2009
Сообщений: 3
По умолчанию

Цитата:
Сообщение от MadReason Посмотреть сообщение
Код:
		function exist()
		{
			$.ajax({
				url: "1.jpg",
				dataType:"text",
				cache: false,
				success: function(){ alert("exists");},
				error: function(){ alert("NOT exists");}
		  });
		}
ну вот так еще извернуться можно)

но это как то "нездорово") слишком много лишних запросов будет.
Может кто ответит , почему этот код все время выдает error ? Подключено JQuery 1.5.1.js , что еще нужно?!
vlsopin вне форума Ответить с цитированием
Старый 04.05.2012, 23:16   #9
Cronos20
Форумчанин
 
Регистрация: 08.07.2010
Сообщений: 679
По умолчанию

А вы что хотите картинку бинарно прочитать?)
Аякс так-то отправляет http запрос и ждет такой же ответ , а именно текстовые данные в соответствии со спецификацией протокола ... Как вы думаете, картинка будет соответствовать его ожиданиям ?
Cronos20 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проверка существование Email адреса на сервере Бутаков_Сергей Работа с сетью в Delphi 7 29.12.2010 01:55
Проверить существование папки Stepan575 Visual C++ 4 17.12.2010 19:02
Проверить существование поля в JavaScript Wicort JavaScript, Ajax 2 06.10.2009 18:13
Как проверить существование потока? John_chek Общие вопросы Delphi 3 17.01.2008 15:16