Ruby-on-rails-2.1-rails-file-uploading
Ruby on Rails 2.1-ファイルのアップロード
サイト訪問者がサーバーにファイルをアップロードする必要がある場合があります。 Railsでは、この要件を非常に簡単に処理できます。 次に、シンプルで小さなRailsプロジェクトを進めます。
いつものように、 upload と呼ばれる新しいRailsアプリケーションから始めましょう。 簡単なrailsコマンドを使用して、アプリケーションの基本構造を作成しましょう。
アップロードしたファイルを保存する場所を決めましょう。 これがパブリックセクション内の data ディレクトリであると想定します。 したがって、このディレクトリを作成し、権限を確認してください。
次のステップは、コントローラーとモデルを作成するための通常の手順です。
モデルの作成
これはデータベースベースのアプリケーションではないため、使いやすい名前であれば何でも使用できます。 DataFile モデルを作成する必要があるとします。
ここで、 data_file.rb モデルファイルに save というメソッドを作成します。 このメソッドは、アプリケーションコントローラーによって呼び出されます。
上記の関数はCGIオブジェクト upload を受け取り、ヘルパー関数 original_filename を使用してアップロードされたファイル名を抽出し、最後にアップロードされたファイルを「public/data」ディレクトリに保存します。 ヘルパー関数 content_type を呼び出して、アップロードされたファイルのメディアタイプを知ることができます。
ここで、 File はrubyオブジェクトであり、 join はディレクトリ名とファイル名を連結し、完全なファイルパスを返すヘルパー関数です。
次に、ファイルを書き込みモードで開くために、 File オブジェクトによって提供されるオープンヘルパー関数を使用しています。 さらに、渡されたデータファイルからデータを読み取り、出力ファイルに書き込みます。
コントローラーの作成
さて、アップロードプロジェクト用のコントローラーを作成しましょう-
次に、2つのコントローラー関数を作成します。 最初の関数 index はビューファイルを呼び出してユーザー入力を取得し、2番目の関数 uploadFile はユーザーからファイル情報を取得して 'DataFile’モデルに渡します。 アップロードディレクトリを、先ほど作成した「ディレクトリ= 'データ'」の「アップロード」ディレクトリに設定します。
ここでは、モデルファイルで定義されている関数を呼び出しています。 render 関数は、ファイルの表示とメッセージの表示にリダイレクトするために使用されています。
ビューを作成する
最後に、コントローラーで言及したビューファイル uploadfile.rhtml を作成します。 このファイルに次のコードを入力します-
ここで、すべては前の章で説明したものと同じです。 唯一の新しいタグは file_field で、ユーザーのコンピューターからファイルを選択するためのボタンを作成します。
multipartパラメーターをtrueに設定することにより、アクションがファイルのバイナリデータを適切に渡すようにします。
ここで注意すべき重要な点は、:upload *ボタンをクリックすると呼び出される:action のメソッド名として *"uploadFile" を割り当てたことです。
次のように画面が表示されます-
次に、ファイルを選択してアップロードします。 このファイルは、実際のファイル名でapp/public/dataディレクトリにアップロードされ、「ファイルが正常にアップロードされました」というメッセージが表示されます。
注-出力ディレクトリに同じ名前のファイルが既に存在する場合、上書きされます。
Internet Explorerからアップロードされたファイル
Internet Explorerは、送信されたファイル名にファイルの完全なパスを含めるため、 original_filename ルーチンは次のようなものを返します-
ただの代わりに-
これは、 File.basename によって簡単に処理され、ファイル名の前のすべてが削除されます。
既存のファイルを削除する
既存のファイルを削除する場合は、非常に簡単です。 あなたがする必要があるのは、次のコードを書くことです-