我正在使用carrierwave将电影上传到亚马逊s3。我想异步这样做,以便我可以同时上传多个视频,我想使用进度条。
我该怎么做?
答案 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
发送请求,并通过它保存。
您可以在此处找到更多教程:
希望这有帮助。