Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 19.10.2015, 14:37
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

<html> 
<head> 
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<script> 
$(function() {
    $('#filess').change(function() {
        if(window.FileReader) {
            var im = new Image(), r = new FileReader(), f = this.files[0], type = f.type;
            r.onload = function(e) {
                im.onload = function() {
                    alert('Type: '+type+'\n'+'Width: '+this.width+'\n'+'Height: '+this.height)
                }
                im.src = e.target.result;
            }
            r.readAsDataURL(f)
        } else {
            //сорри, только через сервер 
        }
    })
});
</script>     
</head> 

<body>
<form id="ka">
<input type="file" id="filess" name="files"/>
<input type="submit" value="Send"/>
</form>
</body> 
</html>


Вам нужно отправлять один файл, а значит name="files", иначе при name="files[]" лишь усложниться структура массива принятых файлов.

<button type="submit"> - такого быть не может, или input type="submit" или button.

PS. Причина в безопасности - для того чтобы использовать свойство value, изображение должно быть в том же каталоге что и скрипт, что в случае веб-страницы нельзя реализовать. В IE можно добавить сайт в доверенные, тоже будет доступно. Сейчас попробую по иному, если не получится, то нужно нужно будет использовать, например, FileReader.

Последний раз редактировалось laimas, 19.10.2015 в 15:34.
Ответить с цитированием
  #12 (permalink)  
Старый 19.10.2015, 15:13
Интересующийся
Отправить личное сообщение для artiom4356 Посмотреть профиль Найти все сообщения от artiom4356
 
Регистрация: 08.07.2015
Сообщений: 16

Стоп! Но разве скрипт не должен получить доступ к указаному пользователе файлу? Хотя для такого случая можно пойти на крайность(для меня это так) и воспользоваться AJAX но как то не очень хочется это делать.
Ответить с цитированием
  #13 (permalink)  
Старый 19.10.2015, 15:33
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Скрипт то получает доступ к файлу, но не раскрывает путь, по которому он получен на машине клиента. Это относится к вопросу по безопасности, и никакой Ajax в этом не поможет. Уж не помню точно, но Ослика точно можно заставить раскрыть этот путь добавив сайт в доверенные. В других браузерах не проверял, не знаю.

В общем не получится "обдурить" браузер, по крайней мере у меня не получилось. Остается только FileReader использовать, код исправлен под него.
Ответить с цитированием
  #14 (permalink)  
Старый 19.10.2015, 15:39
Интересующийся
Отправить личное сообщение для artiom4356 Посмотреть профиль Найти все сообщения от artiom4356
 
Регистрация: 08.07.2015
Сообщений: 16

Ладно спасибо. Я понял что это, ну по крайней в мере в большей части глупая затея. Тема закрыта.
Ответить с цитированием
  #15 (permalink)  
Старый 19.10.2015, 15:47
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Затея чего, узнать разрешение изображения на клиенте? Чем же она глупая? В старых браузерах это только на сервере корректно можно получить, что впрочем все равно придется на нем делать, если вам необходимо контролировать разрешение.
Ответить с цитированием
  #16 (permalink)  
Старый 19.10.2015, 17:01
Интересующийся
Отправить личное сообщение для artiom4356 Посмотреть профиль Найти все сообщения от artiom4356
 
Регистрация: 08.07.2015
Сообщений: 16

Я просто хотел изначально проверять размер загружаемого изображения.
Ответить с цитированием
  #17 (permalink)  
Старый 19.10.2015, 17:21
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

размер, это сколько вести файл, а разрешение, это ширина на высоту. Если размер, то FileReader не нужен, это можно узнать как files[0].size.
Ответить с цитированием
  #18 (permalink)  
Старый 19.10.2015, 17:27
Интересующийся
Отправить личное сообщение для artiom4356 Посмотреть профиль Найти все сообщения от artiom4356
 
Регистрация: 08.07.2015
Сообщений: 16

Не правильны выразился "Разрешение". И да почему вы говрите что AJAX не поможет? Можноже отправить картинку на сервер а потом просто получить с него всю информацию о данном файле. Разве нет?

Последний раз редактировалось artiom4356, 19.10.2015 в 17:29.
Ответить с цитированием
  #19 (permalink)  
Старый 19.10.2015, 17:42
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от artiom4356
И да почему вы говрите что AJAX не поможет?

А чем? Тут уж не разрешение надо возвращать, а ошибку в случае если оно не удовлетворяет требованию, то есть это уже проверка на сервере перед загрузкой файлов, а не забава ради информации.
Об это я говорил ранее. Если ошибок нет, перемещаем файл в каталог и возвращаем "Ок". Между прочим, заставлять пользователя загружать картинку под аватарку строго W x H, это вчерашний день - сервер спокойно может уменьшить изображение, вырезать пропорционально и никаких проблем. А ограничения можно на тип файла (не картинка, или не разрешать gif-анимацию, если больше размера аватарки и нечем на сервер работать с такой анимацией), размер файла не позволит уменьшить его (памяти не хватит), и т.п.
Ответить с цитированием
  #20 (permalink)  
Старый 19.10.2015, 19:16
Интересующийся
Отправить личное сообщение для artiom4356 Посмотреть профиль Найти все сообщения от artiom4356
 
Регистрация: 08.07.2015
Сообщений: 16

Я к стаи что то малость не понял что падете вот тут r.onload = function(e) в е и обясните это e.target.result и это r.readAsDataURL(f) а то что то я малость не доконца понимаю эти строчки.

Последний раз редактировалось artiom4356, 19.10.2015 в 20:28.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Отмена .preventDefault() или возобновление события нажатия на клавишу клавиатуры antserg jQuery 15 13.06.2017 23:14
Очистка памяти, отмена загрузки картинки, отмена события. zhurchik Общие вопросы Javascript 16 23.10.2014 13:48
Отмена события по нажатию на Enter Valentinka_1 jQuery 12 01.08.2013 02:30
отмена повторного выполнения события frant32 Events/DOM/Window 13 06.10.2012 12:25
Отмена события preventDefault() , поясните пожалуйста namez jQuery 3 15.04.2010 14:54