Кто-нибудь знает, как отправить это через ajax? - PullRequest
0 голосов
/ 11 ноября 2010

Это pandauploader pandastream. За исключением того, что я хочу, чтобы он был отправлен через AJAX. Кто-нибудь знает, как я мог бы преобразовать это?

:javascript
  $("#returned_video_id").pandaUploader(#{Panda.signed_params('post', "/videos.json", :profiles => 'f1eb0fe2406d3fa3530eb7324f410789').to_json}, {
    onsuccess: function(){
      $(".opened_photo").fadeTo(200, 0, function() {
        $(".opened_photo").hide();
        $(".media_lib").fadeIn();
      });
    },
    upload_progress_id: "upload_progress",
    allowed_extensions: ['AAC', 'AVI', '3GP', 'FLV', 'MOV', 'MP3', 'MP4', 'MPEG', 'OGG', 'WAV', 'WEBM', 'WMA', 'WMV',
      'aac', 'avi', '3gp', 'flv', 'mov', 'mp3', 'mp4', 'mpeg', 'ogg', 'wav', 'webm', 'wma', 'wmv']
  });

1 Ответ

1 голос
/ 11 ноября 2010

multipart/form-data загрузка файла не может быть отправлена ​​через XMLHttpRequest.Это связано с тем, что тело запроса всегда отправляется в виде строки, закодированной как UTF-8.Вы не можете отправлять необработанный двоичный файл.

Если вы пишете пользовательский получатель загрузки, ожидающий его, вы можете закодировать содержимое файла внутри текста, используя схему, подобную base-64.Но это сделает загрузку больше (и, следовательно, медленнее), и в любом случае вы можете читать файлы из JavaScript только в тех браузерах, которые поддерживают новый Файловый API .

Я не знаюо 'pandastream', но выгрузка HTML-файла без перезагрузки страницы обычно осуществляется путем размещения формы с target, указанным по <iframe>, по этой причине.

(Кстати, allowed_extensions недействительно хорошая идея. Помимо отсутствующих возможностей case и других отсутствующих возможных расширений, на платформах, отличных от Windows, тип файла может не иметь ничего общего с расширением.)

...