За последние 24 часа нас посетил 54201 программист и 1724 робота. Сейчас ищут 824 программиста ...

Предварительный просмотр картинки при аплоаде.

Тема в разделе "Вопросы от блондинок", создана пользователем heapKiller, 27 авг 2008.

  1. heapKiller

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

    С нами с:
    27 авг 2008
    Сообщения:
    95
    Симпатии:
    0
    Есть форма, отправляющая большой файл + картинку к нему. Нужно организовать превьюв картинки после выбора ее пользователем. Я как-то не очень сильно понимаю технологию. Можно это сделать с помощью пхп?
     
  2. Hight

    Hight Старожил
    Команда форума Модератор

    С нами с:
    5 мар 2006
    Сообщения:
    7.153
    Симпатии:
    0
    Адрес:
    из злой параллельной вселенной
    Я задумался и выдал ответ - "в зависимости от того, что нужно сделать - наверное можно".
     
  3. heapKiller

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

    С нами с:
    27 авг 2008
    Сообщения:
    95
    Симпатии:
    0
    Есть форма с двумя полями:
    1) Для выбора файла
    2) Для выбора соотв картинки
    После выбора картинки нужно показать ее в <img> до того как зверь сделает субмит всей формы
    Как сделать с Аяксом - ясно
    С использованием всяких сторонних <object> тоже
    Можно -ли по простому ( принять ее в пхп сценарий и выплюнуть в <img> для превьюва? Если да -то как. Заранее спасибо.

    зы Нужно быстро, было б нужно "не быстро" сам бы разобрался.
     
  4. neverlose

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

    С нами с:
    27 авг 2008
    Сообщения:
    1.112
    Симпатии:
    20
    <input type="file">

    <pre>
    <?php
    print_r($_FILES);
    ?>
    </pre>
     
  5. heapKiller

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

    С нами с:
    27 авг 2008
    Сообщения:
    95
    Симпатии:
    0
    Ну примерно так и думал. Только пока не втюхал, а с какого перепугу оно там обновиться. И еще один вопрос
    такое сработает?

    function onSelectPicture(){
    var f = document.forms['upload_form'];
    f.action = "/music/av_preview.php";
    f.submit();
    }
     
  6. neverlose

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

    С нами с:
    27 авг 2008
    Сообщения:
    1.112
    Симпатии:
    20
    Сработает. Менять экшен формы можно.
     
  7. S.t.A.M.

    S.t.A.M. Активный пользователь

    С нами с:
    10 сен 2007
    Сообщения:
    1.041
    Симпатии:
    0
    Нельзя! т.к. что бы ее отобразить нужно отправить серверу, а без отправки ее отобразить нельзя т.к. для этого пришлось бы скрипту дать доступ к файлам, а это противоречит политике безопасности и по этому это не реализовано!..
    т.е. только ActiveX или отсылать на сервер.
     
  8. neverlose

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

    С нами с:
    27 авг 2008
    Сообщения:
    1.112
    Симпатии:
    20
    О чём ты говоришь? Человек спросил, сможет ли он js'ом, поменять экшен формы...
     
  9. S.t.A.M.

    S.t.A.M. Активный пользователь

    С нами с:
    10 сен 2007
    Сообщения:
    1.041
    Симпатии:
    0
    neverlose
    Я так понял, что пользователь должен ее выбрать и она тут же отобразилась превьюхой.... (без отсылки на сервер, т.к. она большая...)
     
  10. neverlose

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

    С нами с:
    27 авг 2008
    Сообщения:
    1.112
    Симпатии:
    20
    Ааа.. ну да. Ты прав. сначала картинку надо залить на сервак, а только потом можешь её в превью кидать.
     
  11. heapKiller

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

    С нами с:
    27 авг 2008
    Сообщения:
    95
    Симпатии:
    0
    Не тут же!!! Я не настолько блондинко ). Из скрипта понятно, что я ее на сервер отсылаю. А как ее потом в тег <img> который на страничке с формой снова запихнуть. Вот чего я не понимаю. Допустим, я отгружаю файл. Назад прелатет ответ который отрисовывает всю страницу с формой, но в таком случае мне надо этот превью где-то хранить, и можно получить конфликт при доступе нескольких зверей, а значит лучше не хранить, а пользовать ['tmp_name'] например. Или может я неправильно всё это понимаю? Короче я не совсем понял технологию этого секса. Объясните, будьте добры.
     
  12. Anonymous

    Anonymous Guest

    почему ?
    tempnam()
     
  13. neverlose

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

    С нами с:
    27 авг 2008
    Сообщения:
    1.112
    Симпатии:
    20
    move_uploaded_file - загрузи файл в папку с картинками, дай ей уникальное имя, в стиле md5( microtime(true)), и возврати путь и имя файла к картинке.
     
  14. heapKiller

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

    С нами с:
    27 авг 2008
    Сообщения:
    95
    Симпатии:
    0
    Ок с "обозвать" понятно.
    Кроме превьюхи есть еще и основной файл к которому лепится картинка, если я её, картинку, куда-то задвину по move_uploaded_file. То как мне обработать ситуацию, с отказом пользователя от uploada? При этом он может просто уйти на другую страницу.
    И опять же откуда ссылка в img узнает имя этого файла.
     
  15. neverlose

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

    С нами с:
    27 авг 2008
    Сообщения:
    1.112
    Симпатии:
    20
    Передай имя файла, что там сложного, в чём проблема не пойму...
     
  16. heapKiller

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

    С нами с:
    27 авг 2008
    Сообщения:
    95
    Симпатии:
    0
    Хотелось не светить имя. Т. е. я так понимаю так <img src="preview.php"> не получится? И опять повторю - полсле выбора картинки зверь может уйти со страницы, а файл уже валяется на сервере, как обработать такую ситуацию.
     
  17. neverlose

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

    С нами с:
    27 авг 2008
    Сообщения:
    1.112
    Симпатии:
    20
    получится, но тогда тебе надо в базе хранить имена и идшки, и тогда сможешь пхп файлу передавать ид, который в свою очередь будет иметь хедеры картинки, и считывть картинку указанную в базе, по переданному ид.
     
  18. heapKiller

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

    С нами с:
    27 авг 2008
    Сообщения:
    95
    Симпатии:
    0
    Короче. я как тупое блондинко. Сделал все на аяксе. Но вопрос таки остался, я нифига не понял как это делать на php+html без привлечения HTTPrequest.
     
  19. heapKiller

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

    С нами с:
    27 авг 2008
    Сообщения:
    95
    Симпатии:
    0
    Разобрался.... Блин.... Как все тупо...
    Вопрос такой:
    После отправки формы все ее поля обнуляются, можно это как-то контролировать? Если нет? то можно в промежутке запихивать все в куки и воcстанавливать на OnLoad?
     
  20. antonn

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

    С нами с:
    10 июн 2007
    Сообщения:
    2.996
    Симпатии:
    0
    можно, разрешаю :)
     
  21. heapKiller

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

    С нами с:
    27 авг 2008
    Сообщения:
    95
    Симпатии:
    0
    Ну спасибо, что снизошли.
     
  22. antonn

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

    С нами с:
    10 июн 2007
    Сообщения:
    2.996
    Симпатии:
    0
    сам спросил и обрисовал решение - что мне еще оставалось делать? :)
     
  23. BS

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

    С нами с:
    10 апр 2008
    Сообщения:
    149
    Симпатии:
    0
    Зачем в куки, если все значения формы доступны в скрипте?

    А как при помощи HTTPrequest можно передать файл на сервер?
     
  24. S.t.A.M.

    S.t.A.M. Активный пользователь

    С нами с:
    10 сен 2007
    Сообщения:
    1.041
    Симпатии:
    0
    heapKiller
    Чет ты мудришь! Делай как все и будеть тебе благодать!
     
  25. heapKiller

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

    С нами с:
    27 авг 2008
    Сообщения:
    95
    Симпатии:
    0
    2 BS: Где они в скрипте после submit() доступны? В FF3 открой DOMEXplorer, посмотри на страничку с <input type='file'> порадуйся (это по поводу HTTPRequest).

    2 S.t.A.M.: Блин я на пхп пишу ровно с того момента, как сюда запостил. Мне и надо понять, как все делают. А тут вместо ответов междометия одни. Я же просил:"Разжуйте технологию плс." Гении ёпт, вещи в себе ))). Я же не по-приколу в раздел для блондинок пишу.