Rails 3.1 проблема загрузки скрепки - PullRequest
1 голос
/ 28 декабря 2011

У меня есть приложение для скрепки и загрузки.Скрепка работает отлично.Но при загрузке нескольких файлов uploadify не работает, то есть не меняет <input type="file" и, более того, когда в форме выбора файлов не разрешается выбирать более одного файла.

Я следовалнижеуказанные шаги

  1. загружены загружать и извлекаться под активы / то есть активы / загружать
    а.uploadify.swf и cancel.png в активах / изображениях
    b.jquery.uploadify.v2.1.4.js, jquery.uploadify.v2.1.4.min.js и swfobject.js

    assets / javascripts
    c.uploadify.css в assets/stylesheets
    d.создан каталог middleware.

  2. добавлены следующие сценарии для загрузки

    $(document).ready(function() {
      <% key = Rails.application.config.session_options[:key] %>
      var uploadify_script_data = {};
      var csrf_param = $('meta[name=csrf-param]').attr('content');
      var csrf_token = $('meta[name=csrf-token]').attr('content');
      uploadify_script_data[csrf_param] = encodeURI(encodeURIComponent(csrf_token));
      uploadify_script_data['<%= key %>'] = '<%= cookies[key] %>';
    
      $('.uploadify').uploadify({
        uploader        : '/assets/uploadify.swf',
        script          : '/assets/uploadify',
        cancelImg       : '/images/cancel.png',
        auto            : true,
        multi           : true,
        removeCompleted : true,
        scriptData      : uploadify_script_data,
        onComplete      : function(event, ID, fileObj, doc, data) {
        }
      });
    });
    </script>
    
  3. Элемент списка

  4. также, модифицировано session_store.rb, application.js,

  5. наконец, добавлен класс для ввода type=file ", class = 'uploadify' "

Пожалуйста, подскажите, где я ошибся.

Спасибо, Джон

1 Ответ

0 голосов
/ 28 января 2012

Это сработало для меня

$(document).ready(function() {
  <% key = Rails.application.config.session_options[:key] %>
    var uploadify_script_data = {};

    // Fetch the CSRF meta tag data
    var csrf_param = $('meta[name=csrf-param]').attr('content');
    var csrf_token = $('meta[name=csrf-token]').attr('content');
    var session_param = '#{key}'
    var session_key = '#{cookies[key]}'

    // Now associate the data in the config, encoding the data safely
    uploadify_script_data[csrf_param] = encodeURI(encodeURIComponent(csrf_token));
    uploadify_script_data[session_param] = encodeURI(encodeURIComponent(session_key));

    $('.uploadify').uploadify({
      uploader        : '/assets/uploadify.swf',
      script          : '/assets/uploadify',
      cancelImg       : '/images/cancel.png',
      auto            : true,
      multi           : true,
      removeCompleted : true,
      scriptData      : uploadify_script_data,
      onComplete      : function(event, ID, fileObj, doc, data) {
      }
    });
  });
</script>

Я считаю, что это проблема с encodeURI и знаками плюс в csrf-token.Я читал это где-то, но не уверен, где сейчас .... Стоит попробовать, хотя

...