За последние 24 часа нас посетили 48684 программиста и 1349 роботов. Сейчас ищут 1050 программистов ...

Kак получить картинку через <input type="file".

Тема в разделе "JavaScript и AJAX", создана пользователем Обычный Нуб, 24 июл 2011.

  1. Обычный Нуб

    Обычный Нуб Активный пользователь

    С нами с:
    30 июн 2011
    Сообщения:
    30
    Симпатии:
    0
    Хочу сделать такую вещь:
    выбирается через <input type="file"... картинка и сразу она же отображается на странице маленькой превьюшкой.

    Проблема - я не знаю как мне получить эту картинку в виде обьекта, чтобы сделать потом с ней что-нибудь (недоброе) в java-скрипте.

    $("#imgUpload").val() в той-же Mozill-e например вообще возвращает только имя файла, даже не путь. Единственное что приходит в голову - скинуть картинку на сервер и вернуть на страницу. Но если картинка будет тяжёлая - то это совсем не решение. Может можно было бы так сделать если бы её можно было бы уменьшить (именно уменьшить а не отмасштабировать) на клиентской стороне - но я что-то не слишком много нашёл в инете скриптов с такой функциональностью (точнее - ни одного).

    Может eсли есть какие-то мысли на этот счёт - посоветуйте плиз. :roll:
     
  2. Вльдемар

    Вльдемар Активный пользователь

    С нами с:
    20 май 2006
    Сообщения:
    635
    Симпатии:
    0
    Адрес:
    Белхород
    Или грузить на сервер или использовать Flash
     
  3. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Обычный Нуб
    яваскриптом - никак, только засабмитить форму с файлом, т.к. залить его на сервак, и как зальется - вывести превьюшку.

    можно флешем. swfupload вроде имеет такой функционал.
     
  4. Обычный Нуб

    Обычный Нуб Активный пользователь

    С нами с:
    30 июн 2011
    Сообщения:
    30
    Симпатии:
    0
    Да, видимо прийдется с флэшем работать (хоть видят боги не хотел я этот флэш на сайт пихать). Но Mozilla уж больно параноидная, а превью пересылаемых на сервак картинок необходимо.

    Спасибо Вльдемар и igordata


    Вот сижу счас и думаю "кули я такой ник себе дурацкий зафигячил". Перерегится штоли?
     
  5. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО
    А почему параноидальная именно Mozilla? Другие браузеры чтоли могут сделать то, что тебе надо?
     
  6. Обычный Нуб

    Обычный Нуб Активный пользователь

    С нами с:
    30 июн 2011
    Сообщения:
    30
    Симпатии:
    0
    Ну например IE старых версий, включая 8 может:

    HTML:
    1. <input type="file" id="uploadDlg"/>
    2. <input type="button" onclick="{
    3.    document.body.appendChild(oImg=document.createElement('img'));
    4.    oImg.setAttribute('src', document.getElementById('uploadDlg').value);
    5.   }"
    6. value="Press Me"/>
    И как этот код мне поможет взломать комп клиента? Ладно, пусть Мозилла создаст виртуальный каталог спрятав им реальный путь. Так она ничего этого не делает, а просто прячет от меня путь к файлу. Значит она параноидальная (и Хром вместе с ней напару). Это как заваривать двери машины на ночь. Поможет от угона? Поможет. Паранойя? Паранойя.
     
  7. rainarr

    rainarr Активный пользователь

    С нами с:
    20 ноя 2010
    Сообщения:
    276
    Симпатии:
    0
    у меня именно в мозилле последнее время получаются такие ошибки что взбешивает круче чем IE, в плане css. могу предоставить примеры :)
     
  8. VItalijs

    VItalijs Активный пользователь

    С нами с:
    17 дек 2008
    Сообщения:
    244
    Симпатии:
    0
    Адрес:
    Рига, Латвия
    а зачем вам путь к файлу? ясное дело браузер не даст никаким образом взаимодействовать с файловой системой, иначе же капец бы начался.
     
  9. alexfer

    alexfer Активный пользователь

    С нами с:
    2 авг 2010
    Сообщения:
    239
    Симпатии:
    0
  10. Обычный Нуб

    Обычный Нуб Активный пользователь

    С нами с:
    30 июн 2011
    Сообщения:
    30
    Симпатии:
    0
    А как ещё отобразить картинку на странице не перегоняя её на сервер и обратно? Пусть не файл, пусть картинка в виде обьекта, как я уже писал выше - мне это даже лучше.

    И потом, знать путь и взаимодействовать - разные вещи. Я например с огромной долей вероятности знаю что у каждого 4-го на диске С я найду Windows/system32, Program Files, Documents and Settings и т.п. И нанести вред системе это мне никак не поможет. А вот если я открою великую тайну что у юзера есть папка /Фотки/Лето 2011/Я и Кошара бухаем на природе/MG_8855.jpg - всё, капец системе.

    Весь идиотизм ситуации, что внедрив на страницу флэшку я делаю спокойно то что мне надо и все это знают. Зачем (?!) Мозилле и Хрому поощерять использование технологий Адоба?


    Я для мультизагрузки юзаю бесплатный Agile Uploader. Супер штука, с ajax, callback и всё такое.