#php #javascript #image #upload
#php #javascript #изображение #загрузка
Вопрос:
Я раньше не часто использовал javascript, и я тоже не очень хороший программист на php, если подумать, но я пытаюсь учиться, создавая небольшой веб-сайт.
У меня есть форма, в которой есть ввод для загрузки файла, который я пытаюсь сделать красивым с помощью этого замечательного скрипта, но, похоже, нет учебника, и код не прокомментирован.
(Я думаю) Я знаю, как заставить его работать нормально, но мне интересно, как это работает. Кто-нибудь хочет быстро взглянуть на него и рассказать мне, что делает весь код в файле js и php?
Я был бы очень признателен 🙂
Ответ №1:
Прежде всего, я бы не рекомендовал использовать эту библиотеку, поскольку есть гораздо лучшие, но ваш вопрос заключался в том, как она работала, а не в том, была ли она хорошей или нет.
Далее:
ajaxUpload
вызывается одной из кнопок в форме загрузки.ajaxUpload
сначала убедитесь, что все аргументы функции верны, создавая окно предупреждения (!), Если с одним из них возникает проблема. (Было бы лучше выдать ошибку, используяthrow "error message"
вместо этого.)ajaxUpload
затем создает iframe с использованиемdocument.createElement
и присваивает ему нулевую ширину и высоту, чтобы он был невидимым, прежде чем добавлять его в документ. Он дает iframe имяajax-temp
.ajaxUpload
добавляетdoUpload
функцию в качествеonload
слушателя в iframe. Он используетaddEvent
функцию как кроссбраузерный способ сделать это.- Затем
ajaxUpload
устанавливает атрибут вызывающей формыtarget
так, чтобы он указывал на iframe, используя имя, которое он дал iframe ранее. Это приводит к отправке формы в iframe вместо замены текущей страницы. Функция также устанавливает некоторые другие атрибуты в форме, хотя, вероятно, было бы лучше добавить эти атрибуты в исходный код HTML, а не из Javascript. - Наконец,
ajaxUpload
отправляет форму с помощьюform.submit()
. - Браузер отправляет форму на сервер, вызывая
ajaxupload.php
запуск. - Сначала
ajaxupload.php
скрипт проверяет, действительно ли браузер отправил файл (на случай, если любопытный пользователь посетил URL вручную вместо отправки формы), затем вызываетuploadImage
функцию с набором параметров, которые он получил от$_REQUEST
объекта. uploadImage
выполняет множество проверок аргументов, которые он получает от клиента, чтобы убедиться, что файл не слишком большой, имеет правильное расширение и т. Д. Если все проверки пройдены, изображение сохраняется и возвращается имя файла, в котором было сохранено изображение. В противном случае он возвращает список ошибок.- Если результат, возвращаемый с помощью
uploadImage
, не является массивом ошибок, скрипт возвращает сообщение об успешном завершении и<img>
тег, в котором онsrc
установлен на URL изображения. В противном случае он возвращает сообщение об ошибке. - На клиенте возврат сообщения об успешном завершении или ошибке вызывает
load
срабатывание события в iframe.doUpload
Вызывается функция, которая зарегистрирована как прослушиватель. doUpload
удаляет себя в качестве слушателя из iframe и запускает некоторый код javascript в контексте iframe, устанавливая атрибут src iframe. Этот код копирует содержимое iframe на родительскую страницу.- Наконец,
doUpload
удаляет iframe из документа, ожидая некоторое время в некоторых браузерах.
Фух, это, конечно, заняло некоторое время, чтобы написать.
Комментарии:
1. Привет, спасибо за ответ. Действительно ценю это. Я просмотрел несколько других сценариев загрузки (таких же, как uploadify), но, насколько я могу судить, ни один из них не выполняет мгновенную загрузку и предварительный просмотр, чего я хотел. Пока он выполняет свою работу и достаточно хорошо построен, я считаю, что я счастлив 🙂 Еще раз спасибо, что нашли время, чтобы напечатать все это, это мне очень помогло