Как отправить файл на сервер, используя JSON и jQuery - PullRequest
5 голосов
/ 26 мая 2011

Я должен отправить файл на свой сервер с помощью jQuery. Как я могу сделать это с помощью JSON?

Тип файла не важен, я собираюсь получить byteArray или что-то подобное в моем серверном приложении.

Если это помогает, я использую приложение ASP.NET, но моя проблема не в том, как я справляюсь с этим на стороне сервера, проблема в том, как отправить данные файла с помощью jQuery.

Я нашел несколько плагинов загрузки для jQuery, которые используют файл Flash, другие, которые не используют Flash, но я действительно хочу знать, как работает процесс, а не просто использовать что-то, уже созданное кем-то!

Ответы [ 5 ]

4 голосов
/ 26 мая 2011

jQuery - это JavaScript. Я думаю, что вы хотите отправить данные через Ajax, что не может быть сделано. Лучшее, что вы можете сделать, это использовать iframe на странице, которая загружает файл во временный каталог (не временный каталог по умолчанию), а затем предоставляет информацию на родительскую страницу о том, где файл сохранен, и затем вы его используете. .

Нет способа загрузить файл на сервер, используя Ajax. Это слишком небезопасно.

Я убираю утверждение выше СЕЙЧАС

Теперь вы можете публиковать / скачивать дату файла, используя Javascript, это очень сложно для новичка понять, но теперь это возможно в отличие от ответа на этот вопрос

Использование загрузки файлов HTML5 с AJAX и jQuery

2 голосов
/ 26 мая 2011

Загрузка файлов не будет выполняться через запрос AJAX.Это должен быть полный HTTP-запрос (POST).Любые используемые плагины jQuery обычно используют либо апплет на основе Flash или Java, либо скрытый трюк iframe, где реальный POST выполняется с использованием iframe, скрытого на странице.

1 голос
/ 16 сентября 2012

Я пробовал использовать $ .ajaxFileUpload (http://www.phpletter.com/Demo/AjaxFileUpload-Demo/) и, если вы используете ASP.NET MVC, вы можете получить файлы следующим образом

  public ActionResult UploadFiles(List<HttpPostedFileBase> uFile)

Использование $ .ajaxFileUpload:

  $.ajaxFileUpload
(
    {
        url: "/Controller/UploadFiles", 
        secureuri: false,
        fileElementId: 'uFile', // the id of the file input controls holding the references to the files
        dataType: 'json',
        success: function (data, status) {
            // needs to handle the json return
        },
        error: function (data, status, e) {
            // same as error
        }
    }
)

Для меня это работает очень хорошо.

1 голос
/ 26 мая 2011

Вы можете вызвать HTTP Post, используя $ .ajax, вам не нужно выполнять какую-либо ручную работу, манипулируя содержимым файла в json.Полезная нагрузка будет в HTTP-запросе, если ваша форма содержит входные данные (type = "file").Я могу отправить пример кода, если вы можете дать мне более подробную информацию о вашем коде.

0 голосов
/ 26 мая 2011

Я настоятельно рекомендую использовать для этого плагин valum . Он имеет большую поддержку и постоянно обновляется по мере того, как браузеры начинают реализовывать поддержку HTML5, такую ​​как FileReader и т. Д. Облегчает и упрощает отправку файловых запросов «AJAX».

https://stackoverflow.com/search?q=valums

РЕДАКТИРОВАТЬ: Извините, что не прочитал ваш вопрос полностью - я прочитал название, прочитал первые пара абзацев и подумал, что знаю, что вы ищете. Случилось так, что последний абзац содержал исключительную оговорку, которую я не видел.

...