Ответ 1
UPDATE в июле 2017:. Это подтверждено как bug в Chrome, и это исправлено.
Основная причина этой ошибки: функция Chrome SafeBrowsing проверяет файл при загрузке или сохранении. Если интернет-соединение с сервером google выполняется быстро, это нормально. Но если соединение медленное или сломанное, SafeBrowsing заставит Chrome зависать в течение нескольких секунд, пока проверка не завершится или не будет завершена.
Использование accept="image/png, image/jpeg, image/gif"
будет обходить эту проблему, поскольку типы MIME image/png, image/jpeg, image/gif
находятся в белом списке SafeBrowsing - проверка не требуется. Однако для accept="image/*"
или accept=".apk"
, поскольку это не в белом списке, SafeBrowsing вызовет проверку и повесил Chrome.
Эта ошибка была исправлена , пропустив проверку при загрузке.
Примечание. Я получаю приведенную выше информацию от китайской статьи, написанной Ван Лэй, вдохновленной ответом @cute_ptr. Спасибо Ван Лэй, и я думаю, что ответ @cute_ptr заслуживает поддержки.
ОБНОВЛЕНИЕ: благодаря комментарию @xiefei окончательный вариант будет выглядеть следующим образом:
<input type="file" name="imgFile" accept="image/png, image/jpeg, image/gif">
. При необходимости могут быть добавлены другие типы изображений MIME.
Эта ошибка воспроизводится на моей машине: Mac + Chrome + <input type="file" accept="image/*">
. Это похоже на ошибку Chrome на Mac, когда используется атрибут accept
, поскольку он не воспроизводится в среде Windows или в других браузерах.