Drag and drop.

ファイルのDrag and dropが出来る、jsライブラリを実装してみた。ちなみにこれはver.2よりライブラリが不要になったよう。 サイトURL: http://www.dropzonejs.com/ github: https://github.com/component/component 使い方:

Preparation

まずはこちらから一式DL. https://github.com/enyo/dropzone/tree/master/downloads ファイル構成はこちら。

/
css/
images/
uploads/
dropzone.js
index.php
upload.php

Let's Work with Dropzone!

css,jsファイルを読みこみ、下を記述。

		  <form action="upload.php" class="dropzone" id="">
  </form>

class dropzoneを与える事で起動するらしい。

Do php work

PHPの記述。upload.phpに以下を記述。


$ds = DIRECTORY_SEPARATOR;  //1

$storeFolder = 'uploads';   //2

if (!empty($_FILES)) {
   
    $tempFile = $_FILES['file']['tmp_name'];          //3            
    
    $targetPath = dirname( __FILE__ ) . $ds. $storeFolder . $ds;  //4
   
    $targetFile =  $targetPath. $_FILES['file']['name'];  //5

    move_uploaded_file($tempFile,$targetFile); //6
   
}
 

上記コードの意訳。 1. DIRECTORY_SEPARATOR を$dsで定義。(しなくても大丈夫かと) 2. アップロードフォルダを指定。 3. ファイルが送信されたら、ファイルオブジェクトを$tempFileに代入。 4. フォルダへの絶対パスの作成 5. アップロード先のファイル絶対パスの指定 6. move_upload_dileでアップロード。

Options

下のスクリプトを追加することで、オプションのパラメータを渡す事が出来る。


Dropzone.options.myAwesomeDropzone = {
  paramName: "file", // The name that will be used to transfer the file
  maxFilesize: 2, // MB
  createImageThumbnails : true,
  init: function() { // Dropzoneのinit時にイベントリスナーを追加できる
    this.on("addedfile", function(file) { console.log("Added!"); });
    this.on("drop", function(file) { console.log("Dropped!"); });
    this.on("uploadprogress", function(file) { console.log("Now on progress!"); });
    this.on("success", function(file) { console.log("success"); });
    this.on("complete", function(file) { console.log("complete"); });
  }
};

もっと詳しく知りたい方は、こちらをどうぞ。 http://www.dropzonejs.com/