0

画像がブラウザにアップロードされ、サムネイルとして表示されるコードを実装しました。次に、キャンバス領域にドラッグすることもできます。しかし、Chromeで実行すると、ファイルをアップロードするためのウィンドウが開かれません。最初に画像がアップロードされ、次にそのサムネイルが作成されます。しかし、それはクロムでは機能していません。

これが私のコードです、

<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Drag Demo</title>
<link href="copy.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div class="container">
<div style = "border:2px  solid black;">
<canvas id = "canvas" style = "position:relative;width:300px;height:300px;top:0px;left:500px; border:2px  solid black;" ondrop="dropIt(event);" ondragover="event.preventDefault();"> </canvas>    
</div>
<div>
    <input type="file" id="fileElem" accept="image/*" style="display:none" >
    <div id="fileSelect" class="drop-area">Select some files</div>
</div>
    <div id="thumbnail"></div>
</div>


<script type="text/javascript">
function dragIt(event) {
event.dataTransfer.setData("Text", event.target.id)
};


function dropIt(event) {
  var theData = event.dataTransfer.getData("Text");
  dt = document.getElementById(theData);
  event.preventDefault();
  var c = document.getElementById("canvas");
  var ctx = c.getContext('2d');
  ctx.drawImage(dt, 100, 0,dt.width,dt.height);      
};


var count = 0;
var fileSelect = document.getElementById("fileSelect"),
fileElem = document.getElementById("fileElem");


fileElem.addEventListener("click",function(e){
  var files = this.files
  handleFiles(files)
},false)  


fileSelect.addEventListener("click", function (e) {
    fileElem.click();
  e.preventDefault(); 
}, false);


function handleFiles(files) {  
  for (var i = 0; i < files.length; i++) {  
    var file = files[i];  
    var imageType = /image.*/; 

    if(!file.type.match(imageType)){
      console.log("Not an Image");
      continue;
    }
    var image = document.createElement("img");
    var thumbnail = document.getElementById("thumbnail");
    image.file = file;
    thumbnail.appendChild(image)
    var reader = new FileReader()
    reader.onload = (function(aImg){
      return function(e){
        aImg.src = e.target.result;
      };
    }(image))
    image.id = count;
    count++;
    image.draggable = true;
    image.ondragstart = dragIt;
    var ret = reader.readAsDataURL(file); 
  }
}

</script>

</body>
</html>
4

1 に答える 1

-1

サーバー上でコードを実行するだけで、機能します。

于 2012-09-10T15:06:13.037 に答える