DropzoneJSとCarrierwaveを使って複数のファイルをアップロードする
Githubページ
DropzoneJS:https://github.com/ncuesta/dropzonejs-rails
Carrierwave:https://github.com/carrierwaveuploader/carrierwave
DropzoneJSとは何
DropzoneJSはAJAXで複数のファイルをアップロードすることを可能にするJavaScriptライブラリです。さらに、このライブラリはアップロードされた画像のドラッグアンドドロップファイルとプレビュー機能もサポートします。
インストール
Gemfileに次のgemを追加します。
gem "dropzonejs-rails"
gem "carrierwave"
コマンドを実行します。
bundle install
ファイルapp/assets/javascripts/application.jsに次の行を追加します。
//= require dropzone
ファイルapp/assets/javascripts/application.cssに次の行を追加します。
*= require dropzone/dropzone
Pictureアップローダを作成します。
rails g uploader picture
モデルImageを生成します。
rails g model image file_name:string
ファイルapp/models/image.rb:
class Image < ApplicationRecord
mount_uploader :file_name, PictureUploader
end
次に、コントローラapp/controllers/images_controller.rbを作成します
class ImagesController < ApplicationController
skip_before_action :verify_authenticity_token
def index
end
def create
@image = Image.new(file_name: params[:file])
if @image.save
render json: { message: "success", fileID: @image.id }, :status => 200
else
render json: { error: @image.errors.full_messages.join(',')}, :status => 400
end
end
end
それからroutes.rbに次の内容を追加します。
Rails.application.routes.draw do
resources :images, only: [:index, :create]
root "images#index"
end
次はビューを作成します。ファイルapp/views/avatars/index.html.erbに以下のような内容を作成します。
<h1>My Images</h1>
<%= form_for(Image.new, html: {multipart: true, class: "dropzone"}) do |f| %>
<div class="fallback">
<%= f.file_field :file_name, multiple: true %>
</div>
<% end %>
<script>
$(function() {
// disable auto discover
Dropzone.autoDiscover = false;
$(".dropzone").dropzone({
maxFilesize: 1,
addRemoveLinks: true
});
});
</script>
結果
Dropzoneのevent
ここで提供されているdropzoneイベントのリストを参照することができます。
Dropzone設定
ここで設定できるコンフィグレーションの一覧を参照することができます。
まとめ
この記事では、Dropzoneをインストールして使用するための基本的な手順を説明します。みんなの仕事に役に立つと嬉しいです。
Author And Source
この問題について(DropzoneJSとCarrierwaveを使って複数のファイルをアップロードする), 我々は、より多くの情報をここで見つけました https://qiita.com/lampt/items/d1efd15974015c54f87f著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .