js實現文件的上傳和輸出,拖拽上傳圖片


js文件上傳 文件下載

以前的文件的下載都是在服務器,現在也是放在服務器比較好,有時候為了一些開發的方便,我們臨時把處理的數據就放在了本地,然后自己訪問。這個也是可以的。

1.利用html5的 FileReader實現文件的上傳和寫出。這里的文件的輸出用的不是FileReader的api(FileReader的文件輸出接口太難用了)所以用了一個目前只有chrome支持Blob的東西(可能其他也支持不確定)

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UFT-8">

<script src="https://cdn.bootcss.com/jquery/1.11.1-beta1/jquery.js"></script>
<script src="./FileSaver.js" charset="utf-8"></script>
</head>
<body >


<div>
 	<div>
		<input type="file" id="files" style="display:none" onchange="fileimport();"/>
		<input type="button" id="import" value="導入"/>
		<input type="button" id="export" value="導出"/>
    </div>
</div>
<script>
var txtdata;
function fileimport(){
    var selectedFile = document.getElementById("files").files[0];//獲取讀取的File對象
    console.log(selectedFile.length);
    var name = selectedFile.name;//讀取選中文件的文件名
    var size = selectedFile.size;//讀取選中文件的大小
    console.log("文件名:"+name+"大小:"+size);
    var reader = new FileReader();//這里是核心!!!讀取操作就是由它完成的。
    reader.readAsText(selectedFile,'gb2312');//讀取文件的內容,注意編碼方式
    reader.onload = function(){
        console.log(this.result);//當讀取完成之后會回調這個函數,然后此時文件的內容存儲到了result中。直接操作即可。
		$('<pre>' + this.result + '</pre>').appendTo('body');
		txtdata = this.result;
    };
}


$(document).ready(function(){
	//alert("start");
	$("#import").click(function(){//點擊導入按鈕,使files觸發點擊事件,然后完成讀取文件的操作。
        $("#files").click();
    });
	$("#export").click(function(){
	    var content = "這是直接使用HTML5進行導出的:"+txtdata;
	    var blob = new Blob([content], {type: "text/plain;charset=utf-8"});
	    saveAs(blob, "file.txt");//saveAs(blob,filename) //僅限於chorme的下載目錄里
	});
})
</script>
</body>
</html>

  

2.圖片的一個上傳。

<!doctype html>
<html lang="en">
 <head>
  <meta charset="UTF-8">
  <meta name="Generator" content="EditPlus®">
  <meta name="Author" content="">
  <meta name="Keywords" content="">
  <meta name="Description" content="">
  <title>Document</title>

<style type="text/css">
*{margin:0px;}
body{background:url("http://a1.qpic.cn/psb?/V108KcrI4Zm6Um/QqRefo*DZf*qDbFYlgL8z0mtU4IO8C.CPrQymvR.I3o!/b/dHUAAAAAAAAA&bo=AASAAgAAAAARB7Y!&rf=viewer_4");}
#Message{width:602px;height:140px;padding:10px; background:#fff;  margin:100px auto; border-radius:5px;
			position:relative;}
#Message #MesCon{width:600px;height:100px; border:1px solid #ddd; border-radius:5px;}
#Message #MesCon .imgBut{width:100px;height:100px; border-right:1px solid #ddd;float:left; font-size:12px; color:#666; text-align:center; line-height:150px; background:url("http://a1.qpic.cn/psb?/V108KcrI4Zm6Um/GTIZ8A5q1FSHpFqxM8xuM*KVuP5Sr*wSd4im08Mi5EE!/b/dHUAAAAAAAAA&bo=HgAXAAAAAAADACw!&rf=viewer_4") no-repeat 33px 30px;}
#Message #MesCon .Edit{width:499px;height:100px; float:right; }

#Message span.fb{width:80px;height:30px; background:#ff9933; color:#fff; text-align:center; line-height:30px;
				display:block; margin-top:10px; float:right; border-radius:5px; font-size:12px; font-family:"微軟雅黑";}
#Message .upload{width:620px;height:220px; background:rgba(0,0,0,0.5); position:absolute;left:0px; top:160px;
				box-shadow:0px 0px 10px #fff;display:none; }
#Message .upload p{width:100%; height:230px; position:absolute; left:0px; top:0px;color:#fff;  font-size:26px; text-align:center;line-height:220px;}
#Message .upload img{margin:20px 8px; border:2px solid #fff;}

.shuoshuo{width:600px; min-height:300px; border:1px solid #ddd; border-radius:5px; margin:10px auto; background:#fff; padding:20px; display:none;
}
.shuoshuo .box{border-bottom:1px dotted #ddd; font-size:14px; line-height:30px;}
</style>

 </head>
 <body>

 <div id="Message">

	<!--發表說說框開始-->
	<div id="MesCon">
		<div class="imgBut">上傳圖片</div>
		<div class="Edit" contenteditable="true"></div>
	</div>
	<!--發表說說框結束-->

	<!--發表按扭開始-->
	<span class="fb">發表</span>
	<!--發表按扭結束-->
	
	<!--圖片拖拽區開始-->
	<div class="upload">
		<p class="tis">請將圖片拖拽到此區域</p>
		
	</div>
	<!--圖片拖拽區結束-->

 </div>


<!--說說內容開始-->
<div class="shuoshuo">

</div>
<!--說說內容結束-->
<script src="https://cdn.bootcss.com/jquery/1.11.2/jquery.min.js"></script>

<script type="text/javascript">
	//點擊圖片上傳按扭
	$(".imgBut").click(function(){
		$(".upload").slideToggle(); //自動收縮和展開
	});


	//找到要拖進去的目標元素
	var oDiv=$(".upload").get(0);
	var op=$(".upload p.tis");

	//當進入
	oDiv.ondragenter=function(){
		op.html("可以釋放元素");
	}
	//離開
	oDiv.ondragleave=function(){
		op.html("請將圖片拖拽到此區域");
	};
	//在內部移動
	oDiv.ondragover=function(e){
		
		e.preventDefault();
		
	}


//釋放
	oDiv.ondrop=function(e){
		e.preventDefault();
		//獲取拖過來的文件
		var fs=e.dataTransfer.files;
		var len=fs.length; //獲取文件個數
		for(var i=0;i<len;i++){
			var _type=fs[i].type;
				
			if(_type.indexOf("image")!=-1){//判斷他是不是圖片文件
				
				var fd=new FileReader();
				fd.readAsDataURL(fs[i]);
				fd.onload=function(){
					var oImg=$("<img src='' width='180' height='180' />");
						oImg.attr("src",this.result);
					$(".upload").append(oImg);
					op.html("");
				}


			}else{
				alert("請,上傳圖片文件!!");
			}
		}
	}


//點擊發表說說按扭
$("span.fb").click(function(){
	
	$(".upload").slideUp();
	var txt=$(".Edit").text();
	if(txt==""){
		$(".Edit").focus();
	}else{
		$(".shuoshuo").show();
		var html=$(".shuoshuo").html();
		$(".shuoshuo").html(html+"<div class='box'>"+txt+"<br/>"+$(".upload").html()+"</div>");
	}
	
	$(".upload").html("");
	$(".Edit").text("");
});
</script>
 </body>
</html>

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM