nw.js node-webkit系列(20)拖动文件到页面并读取文件信息

node-webkit支持把文件直接拖动到页面,并获取文件绝对路径,再通过node.js的fn模块打开相应文件的方法。

如果想要获取拖动到页面的文件路径,请参考下面的例子:

<!DOCTYPE html>
<html>

	<head>
		<meta charset="utf-8" />
		<title></title>
		<style>
			#holder {
				border: 10px dashed #ccc;
				width: 300px;
				height: 300px;
				margin: 20px auto;
			}
			
			#holder.hover {
				border: 10px dashed #333;
			}
		</style>
		<script>
			//Same as $(document).ready();
			function ready(fn) {
				if (document.readyState != 'loading') {
					fn();
				} else {
					document.addEventListener('DOMContentLoaded', fn);
				}
			}
			//When the page has loaded, run this code
			ready(function() {
				// prevent default behavior from changing page on dropped file
				window.ondragover = function(e) {
					e.preventDefault();
					return false
				};
				// NOTE: ondrop events WILL NOT WORK if you do not "preventDefault" in the ondragover event!!
				window.ondrop = function(e) {
					e.preventDefault();
					return false
				};
				var holder = document.getElementById('holder');
				holder.ondragover = function() {
					this.className = 'hover';
					return false;
				};
				holder.ondragleave = function() {
					this.className = '';
					return false;
				};
				holder.ondrop = function(e) {
					e.preventDefault();
					for (var i = 0; i < e.dataTransfer.files.length; ++i) {
						console.log(e.dataTransfer.files[i].path);
					}
					return false;
				};
			});
		</script>
	</head>

	<body>
		<div id="holder"></div>
	</body>

</html>

如果需要读取更多内容,请使用:

holder.ondrop = function (e) {
  e.preventDefault();

  var file = e.dataTransfer.files[0],
      reader = new FileReader();
  reader.onload = function (event) {
    console.log(event.target);
  };
  console.log(file);
  reader.readAsDataURL(file);

  return false;
};

(注):以上的方法是使用HTML5来绑定drag / drop事件,如果使用JQuery方法绑定时,获取dataTransfer对象要使用e.originalEvent.dataTransfer语句。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值