如何使用carrierwave异步上传视频

时间:2016-03-19 13:30:45

标签: ruby-on-rails ruby ruby-on-rails-4 carrierwave

我正在使用carrierwave将电影上传到亚马逊s3。我想异步这样做,以便我可以同时上传多个视频,我想使用进度条。

我该怎么做?

1 个答案:

答案 0 :(得分:1)

您可以使用dropzone。这是我在我的应用中使用的示例代码:

查看:

<%= form_tag user_new_drag_drop_photo_path, method: :post, class: "dropzone form-horizontal", id: "media-dropzone", :authenticity_token => true do %>
  <div class="fallback">
    <%= file_field_tag "photo", multiple: true %>
  </div>
<% end %>

Js代码:

function create_dropzone(thumbnailUrls){
  Dropzone.autoDiscover = false;
  var mediaDropzone;
  mediaDropzone = new Dropzone("#media-dropzone", {
    addRemoveLinks: true,

    success: function(file, response) {
              $(file.previewTemplate).find('.dz-remove').attr('id', response.id);
              $(file.previewElement).addClass("dz-success");
            },

    removedfile: function(file){
                  var id = $(file.previewTemplate).find('.dz-remove').attr('id');
                  var parent = $(file.previewTemplate).find('.dz-remove').parent();
                  parent.remove();
                 // The above will remove the file preview but you can send a AJAX request to delete it from server
            },

    init: function () {
                // This callback be used to do some task on dropzone intialize
    }
  });

这纯粹是我的代码(我删除了一些部分),你需要根据自己改变它。我使用了user_new_drag_drop_photo_path这是我的自定义路径,您可以将其用于photos_controllers create操作。它将使用AJAX发送请求,并通过它保存。

您可以在此处找到更多教程:

http://www.dropzonejs.com/

希望这有帮助。