twitter facebook

jquery:画像ファイルのドラッグ&ドロップ&コピー

画像ファイルのドラッグ&ドロップのjqueryを使ったUI です。
*ローカル→サーバー ではなく サーバー→サーバー です。
こんなかんじのUIです。ドラッグアンドドロップで画像をコピーしたり、移動させたりする処理です。

ソース

<script type="text/javascript" src="/js/jquery-1.9.1.js" ></script>
<script type="text/javascript" src="/js/jquery-ui/jquery-ui.min.js"></script>

<script type="text/javascript">
$(function(){

	$(".drag").draggable({

		// helper:clone は画像をコピーするイメージの場合は必要
		helper: "clone",
		// ドラッグ開始時
		start : function (event , ui){
		} ,
		// ドラッグ中
		drag : function (event , ui) {
		} ,
		// ドラッグ終了時に呼ばれる
		stop : function (event , ui){
		}
	});

	$(".drag").droppable({
		// ドラッグ開始時
		drop: function( event, ui ) {
			src = $(ui.draggable[0]).attr('src') ;
			dest = $(this).attr('src') ;
			// サーバーに処理を渡す。
			_copy(this, src, dest) ;
		} ,
		// ドラッグ終了時
		out: function( event, ui ) {
		}
	});
	
});

function _copy(obj, src, dest)
{
	// src  は コピー元画像 例) /img/31.jpg
	// dest は コピー先ファイル名 例) /img/33.jpg
	// ajax でサーバー側にファイルコピーの指示をだす。
	// プログラムは省略
}
</script>
html側の class="drag" は jquery側の $(".drag") と合わせます。要所だけ記載しておきます。* <ul class="ul_flex"> などのcssは適宜してください。
html
<ul class="ul_flex">
<li >
<img src="/img/31.jpg" class="drag" width="90" height="90" />
</li>
<li>
<img src="/img/32.jpg" class="drag" width="90" height="90" />
</li>
<li>
<img src="/img/33.jpg" class="drag" width="90" height="90" />
</li>
</ul>
ついでに /img/33.jpg が存在しない場合は nophoto.png を表示するように .htaccess なども細工しておきます。
.htaccess
ErrorDocument 404 /img/nophoto.png

所感

WEB上でドラッグ&ドロップできると気持ちいいです。お客様にも評判がよかったです。ちなみに、Androidのスマホ・タブレットでも普通にできました。
アップロードのUIやサーバー側の処理は省略します。
今回は サーバー→サーバーですが、機会があれば ローカル→サーバー のドラッグ&ドロップも説明します。
AUTHOR
@hiropon
最終更新日 2018/10/03
FAVORITE good stock
LINK TAG
記法を見る