NullPointerException
s - исключения, возникающие при попытке использовать ссылку, которая указывает на отсутствие местоположения в памяти (null), как если бы она ссылалась на объект. Вызов метода по нулевой ссылке или попытка получить доступ к полю нулевой ссылки вызовет функцию NullPointerException
. Они наиболее распространены, но другие способы перечислены на странице NullPointerException
javadoc.
Вероятно, самый быстрый пример кода, который я мог бы придумать для иллюстрации NullPointerException
, be:
public class Example {
public static void main(String[] args) {
Object obj = null;
obj.hashCode();
}
}
В первой строке внутри main
я явно устанавливаю ссылку Object
obj
равной null
. Это означает, что у меня есть ссылка, но она не указывает на какой-либо объект. После этого я пытаюсь обработать ссылку так, как если бы она указывала на объект, вызывая метод на нем. Это приводит к NullPointerException
, потому что нет кода для выполнения в местоположении, на которое указывает ссылка.
(Это техничность, но я думаю, что она упоминает: ссылка, которая указывает на null, равна 't то же, что и указатель C, указывающий на недопустимую ячейку памяти. Нулевой указатель буквально не указывает на в любом месте , который отличается от указаний на местоположение, которое оказывается недопустимым.)
Выезд SWFUpload, который является по существу API JavaScript к абсолютно превосходящим возможностям обработки загрузки файла флэш-памяти. Лучшая вещь там до браузеров наконец нагоняет.
Из ссылки:
- Загрузка несколько файлов сразу ctrl/shift-selecting в диалоговом окне
- обратные вызовы JavaScript на всех событиях
- Получают информацию файла, прежде чем загрузка запустится
- элементы загрузки Стиля с XHTML и информацией о Дисплее css
- , в то время как файлы загружают использование, страница No HTML
- перезагружает необходимый
- Работы над всеми платформами/браузерами, который имеет поддержку Flash.
- Ухудшается корректно к нормальной форме загрузки HTML, если Flash или JavaScript недоступны
- размер файла Управления, прежде чем загрузка запустится
- Только дисплей выбранные типы файлов в диалоговом окне
- загрузки Очереди, удалите/добавьте файлы перед стартовой загрузкой
-----iframe-----
загрузки Для запуска, Вы хотите иметь iframe на своей странице. Это предназначено для коммуникации сервера. Вы скроете его позже, но на данный момент, сохранить его видимым. Дайте этому iframe атрибут имени, как "загрузчик" или что-то.
Теперь, в Вашей форме, ставит цель к имени iframe и действие к сценарию, который Вы имеете на сервере, который примет загрузку файла (как нормальная форма с загрузкой файла). Добавьте ссылку в той форме с текстом, "Добавьте Файл". Набор, которые связываются для выполнения функции JavaScript, которая добавит новый вход к форме. Это может быть сделано через DOM, но я рекомендовал бы библиотеку JavaScript как jquery.
, После того как новый вход файла добавляется к форме, установите событие размытости того входа к функции JavaScript, которая отправит форму и затем проверять его периодически на вывод. Чтение iframe может быть хитрым, но это возможно.
Имеют Ваш сценарий загрузки файла, производит "Сделанный". или имя файла или что-то, когда загрузка завершена.
Проверка это каждую приблизительно секунду до существует содержание. После того как Вы имеете содержание, уничтожаете Ваш таймер и заменяете вход файла названием файла (или "Файла, Загруженного") или что бы то ни было.
Скрывают Ваш iframe с CSS.
Для решения нефлэш-памяти можно использовать NeatUpload. Я использовал его на обширном проекте в прошлом году с требованием без флэш-памяти. Очень легко интегрироваться в существующие решения. Я думал, что это был бриз для работы с. Легче, в моем ограниченном опыте, чем работа с SWFUpload в ASP.NET. Вероятно, потому что NeatUpload создается только для ASP.NET.
От YUI! (Пользовательский интерфейс Yahoo), https://yuilibrary.com/yui/docs/uploader /
- Несколько регистрируют выбор в единственном "Открытом Файле" диалоговое окно.
- Расширение файла фильтрует для упрощения выбора пользователя.
- отслеживание Прогресса для загрузок файла.
- диапазон А метаданных файла: имя файла, размер, созданная дата, дата, измененная, и автор.
- Ряд событий диспетчеризировал на различных аспектах процесса загрузки файла: выбор файла, прогресс загрузки, завершение загрузки, и т.д.
- Включение дополнительных данных в файле загружают запрос POST.
- Более быстрая загрузка файла на широкополосных соединениях из-за измененного ОТПРАВЛЯЮТ размер буфера.
- ответ сервера Той-же-страницы после завершения загрузки файла.
Полностью Свободный
Я хотел бы немного больше разъяснения "подобной Gmail" загрузки файла.
Вы имеете в виду, как, если это находится для немного, это автоматически присоединяет его к проекту?
Вы говорите о загрузке без полностраничной обратной передачи? Смотрите на http://www.phpletter.com/Demo/AjaxFileUpload-Demo/ , который создает скрытый iframe, копирует элемент управления вводом и использует iframe для выполнения сообщения для получения файла на сервере.
, Если Вы ищете поведение, где то, когда пользователь нажимает "attach file" и диалоговое окно просмотра файла автоматически, открывается, который может быть сделан с помощью JavaScript, но не работает в FireFox, который имеет предосторожность безопасности требования, чтобы пользователь вызвал кнопку "Browse" непосредственно (а не программно через сценарий).
Для "автоматической" загрузки, используйте JavaScript для присоединения к событию "изменения" для свойства "значения" 'входное' управление так, чтобы желание работало, когда файл был выбран.
Код Gmail является трудным найти Ваш путь вокруг, но если я должен был предположить, это - то, как он работает:
Вместо этого вы можете использовать клон Flickr Uploader .
Вот клон загрузчика Gmail . Это точный клон программы загрузки Gmail с некоторыми дополнительными возможностями. Вы можете увидеть эскизы изображений после загрузки. Перетащите эскизы, чтобы изменить порядок и заменить любой эскиз. Это делается с помощью jQuery . Вы можете увидеть демонстрацию здесь . Исходный код можно бесплатно загрузить в виде одного zip-файла .
Я надеюсь, что вы легко удалите часть кода и получите желаемое. Вы можете оставлять комментарии в блоге ABCoder, если вам нужна дополнительная помощь.