Загрузите изображения с образцом модального диалогового окна jQuery - PullRequest
1 голос
/ 22 февраля 2011

Кто-нибудь знает какие-либо проекты / демо и т. Д., Которые могут показать мне следующее,

, нажав на ссылку «Загрузить изображение» на странице, и появится модальное диалоговое окно jQuery с формой, позволяющей пользователю загружать файлыизображение с компьютера или укажите ссылку на изображение в Интернете.Затем изображение загружается в ajax, и в модальном диалоговом окне отображается миниатюра, после чего пользователь щелкает изображение, модальное диалоговое окно исчезает и соответствующий HTML-фрагмент вставляется в текстовое поле (здесь я использую TinyMce).

Это в значительной степени то, что делает WordPress, но WordPress слишком сложен для обучения.Кто-нибудь знает более простой пример, предпочтительно приложение ASP.NET MVC, или кто-то может указать мне, что нужно сделать, пожалуйста?

Ответы [ 4 ]

3 голосов
/ 22 февраля 2011

Для начала вы можете использовать плагин uploadify: http://www.uploadify.com/

У вас есть некоторые события, когда файл загружен.Реализуйте это событие и сделайте работу здесь.

Надеюсь, это поможет

1 голос
/ 23 февраля 2011

Хорошо, это будет долго. Как уже упоминалось - вы не можете напрямую загружать через AJAX, но вы наверняка можете подделать поведение, отправив сообщение на скрытый iFrame.

Для целей этой демонстрации я бы пошел с плагином jQuery blockUI для модального ... компонент загрузки файла на самом деле не имеет значения. Основной процесс:

  1. Откройте модальное окно и представьте обычный диалог загрузки
  2. Выберите скрытый iFrame с помощью поста формы. Отключить возможность закрыть модал.
  3. Когда загрузка будет завершена (в конце сценария), перезапустите тег, который вызывает функцию в родительском фрейме.
  4. Функция в родительском фрейме берет URL нового изображения и выполняет .append () к телу модального окна и повторно включает возможность закрыть модальное.

Хотя это не законченное приложение, оно должно дать вам необходимую основу. Если вам нужно что-то на 100% ... ну, это заняло бы у меня больше времени, чем у меня в данный момент, так как я просто адаптирую часть моего существующего кода к вашему qasting.

Часть сообщения модального сообщения (включая iFrame):

<div id="UploadDrivers">
  <a href="#" onclick="$('#UploadForm').toggle();return false;" title="Upload New Image">
  <img src="/upload.gif" title="Upload New Image" />Upload New Image</a>
    <div id="UploadForm" style="display:none;text-align:right;">
      <form method="post" enctype="multipart/form-data" style="display:inline;"
         action="/uploadLogic.aspx" target="FileUpload"
         onsubmit="$('#UploadDrivers').hide(); $('#UploadStatus').show();">
           <input type="hidden" name="CALLBACK" value="uploadCallback" />
           <input type="file" name="FILE_NAME" />
           <input type="submit" value="Upload Image"  
             onclick="return $('input[name=FILE_NAME]', '#UploadForm').val() != '';"/>
        </form>
      </div>
      <iframe id="FileUpload" name="FileUpload" src="javascript:false;" style="width:1px;height:1px;border:none;"></iframe>
    </div>
    <div style="text-align:center;display:none;" id="UploadStatus">
      Uploading file.... <img src="busy.gif" title="Uploading..." />
    </div>
</div>

Ваша страница загрузки (в данном случае uploadLogic.aspx):


\\Whatever logic you need for your situation to upload a file goes here
script language="javascript" type="text/javascript">
    function init(){
        var bError = ; //boolean from the upload
        var fileGuid = ""; //guid of file on server
        var msg = ""; //message to display on callback
        var fileName = "" //for friendly display of original name
        if(top.) {
            top.(bError, guid, filename, msg) 
            //callback function passed to this page to allow it to be more 'universal'
        }
    }
/script>

И последнее, но не менее важное ... на главной странице есть ссылка для показа модального режима и такая функция, как


  function uploadCallback(error, guid, filename, message) {
    if(error) { alert("There was an error uploading the file:\r\n\r\n" + message); return; }
    $("#UploadDrivers").append(");
    //do whatever else
    }

... это важные биты - вы, возможно, захотите что-то сделать с расширением файла или более прохладным пользовательским интерфейсом, но это основы того, как это можно сделать с помощью JS.

0 голосов
/ 22 февраля 2011

Вам нужно использовать вспышку, чтобы сделать это. Это не значит, что вам нужно изучать flash.

Используйте такой компонент, как Uploadify или SwfUpload (uploadify построен на SwfUpload).

Примечание: Flash имеет некоторые странные проблемы с кодами состояния HTTP. У меня есть (и связанная с этим странная ошибка CURL) на моем сайте .

Во время этого убедитесь, что вы знаете, что делаете. Системы загрузки могут легко испортиться, создав большие дыры в безопасности вашего сервера. Поверьте мне, я прошел (надежно реализовал) это, и это одна из самых сложных частей, когда речь заходит о безопасности.

0 голосов
/ 22 февраля 2011

не может загрузить изображение через ajax. Используйте Iframe во всплывающем окне div

...