html5中文学习网

您的位置: 首页 > html5教程 > 入门教程 » 正文

HTML5拖拽文件到浏览器并实现文件上传下载功能代码_html5教程技巧

[ ] 已经帮助:人解决问题
点评:使用HTML5拖拽文件到浏览器并实现文件上传下载,html5的功能是越来越强大了,下面与大家分享下具体的实现代码,感兴趣的朋友可以参考下哈

先上代码,写的jsp页面,后台是tomcat服务器,所以页面里有一些java的代码,如果后台用其他语言可以无视: tAEHTML5中文学习网 - HTML5先行者学习网

复制代码
代码如下:
tAEHTML5中文学习网 - HTML5先行者学习网
<%@ page language="java" contentType="text/html; charset=UTF-8" tAEHTML5中文学习网 - HTML5先行者学习网
pageEncoding="UTF-8"%> tAEHTML5中文学习网 - HTML5先行者学习网
<%@page import="java.io.*"%> tAEHTML5中文学习网 - HTML5先行者学习网
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> tAEHTML5中文学习网 - HTML5先行者学习网
<html> tAEHTML5中文学习网 - HTML5先行者学习网
<head> tAEHTML5中文学习网 - HTML5先行者学习网
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> tAEHTML5中文学习网 - HTML5先行者学习网
<title>上传、下载文件</title> tAEHTML5中文学习网 - HTML5先行者学习网
<style type="text/css"> tAEHTML5中文学习网 - HTML5先行者学习网
#filedrag { tAEHTML5中文学习网 - HTML5先行者学习网
display: none; tAEHTML5中文学习网 - HTML5先行者学习网
font-weight: bold; tAEHTML5中文学习网 - HTML5先行者学习网
text-align: center; tAEHTML5中文学习网 - HTML5先行者学习网
padding: 1em 0; tAEHTML5中文学习网 - HTML5先行者学习网
margin: 1em 0; tAEHTML5中文学习网 - HTML5先行者学习网
color: #555; tAEHTML5中文学习网 - HTML5先行者学习网
border: 2px dashed #555; tAEHTML5中文学习网 - HTML5先行者学习网
border-radius: 7px; tAEHTML5中文学习网 - HTML5先行者学习网
cursor: default; tAEHTML5中文学习网 - HTML5先行者学习网
} tAEHTML5中文学习网 - HTML5先行者学习网
#filedrag.hover { tAEHTML5中文学习网 - HTML5先行者学习网
color: #f00; tAEHTML5中文学习网 - HTML5先行者学习网
border-color: #f00; tAEHTML5中文学习网 - HTML5先行者学习网
border-style: solid; tAEHTML5中文学习网 - HTML5先行者学习网
box-shadow: inset 0 3px 4px #888; tAEHTML5中文学习网 - HTML5先行者学习网
} tAEHTML5中文学习网 - HTML5先行者学习网
</style> tAEHTML5中文学习网 - HTML5先行者学习网
</head> tAEHTML5中文学习网 - HTML5先行者学习网
<body> tAEHTML5中文学习网 - HTML5先行者学习网
<form id="upload" action="UploadServlet" enctype="multipart/form-data" tAEHTML5中文学习网 - HTML5先行者学习网
method="post" onsubmit="return upLoad();"> tAEHTML5中文学习网 - HTML5先行者学习网
<p> tAEHTML5中文学习网 - HTML5先行者学习网
<label for="fileselect">file name:</label><input multiple="true" tAEHTML5中文学习网 - HTML5先行者学习网
type="file" id="fileselect" name="fileselect[]" /> tAEHTML5中文学习网 - HTML5先行者学习网
<div id="filedrag">或者将文件拖拽到这里</div> tAEHTML5中文学习网 - HTML5先行者学习网
<div id="submitbutton"> tAEHTML5中文学习网 - HTML5先行者学习网
<input type="submit" value="提交"> tAEHTML5中文学习网 - HTML5先行者学习网
</div> tAEHTML5中文学习网 - HTML5先行者学习网
</form> tAEHTML5中文学习网 - HTML5先行者学习网
<div id="messages"> tAEHTML5中文学习网 - HTML5先行者学习网
</div> tAEHTML5中文学习网 - HTML5先行者学习网
<% //java代码,显示服务器上可以供下载的文件 tAEHTML5中文学习网 - HTML5先行者学习网
File f = new File("G://defggg/"); tAEHTML5中文学习网 - HTML5先行者学习网
File[] list = f.listFiles(); tAEHTML5中文学习网 - HTML5先行者学习网
for (int i = 0; i < list.length; ++i) { tAEHTML5中文学习网 - HTML5先行者学习网
System.out.println(list[i].getName()); tAEHTML5中文学习网 - HTML5先行者学习网
out.print("<a href='DownloadServlet?filename=" tAEHTML5中文学习网 - HTML5先行者学习网
+ list[i].getName() + "'>" + list[i].getName() tAEHTML5中文学习网 - HTML5先行者学习网
+ "</a><br/>"); tAEHTML5中文学习网 - HTML5先行者学习网
} tAEHTML5中文学习网 - HTML5先行者学习网
%> tAEHTML5中文学习网 - HTML5先行者学习网
<script type="text/javascript"> tAEHTML5中文学习网 - HTML5先行者学习网
var upfiles = new Array(); tAEHTML5中文学习网 - HTML5先行者学习网
// getElementById tAEHTML5中文学习网 - HTML5先行者学习网
function $id(id) { tAEHTML5中文学习网 - HTML5先行者学习网
return document.getElementById(id); tAEHTML5中文学习网 - HTML5先行者学习网
} tAEHTML5中文学习网 - HTML5先行者学习网
// output information tAEHTML5中文学习网 - HTML5先行者学习网
function Output(msg) { tAEHTML5中文学习网 - HTML5先行者学习网
var m = $id("messages"); tAEHTML5中文学习网 - HTML5先行者学习网
m.innerHTML = msg + m.innerHTML; tAEHTML5中文学习网 - HTML5先行者学习网
} tAEHTML5中文学习网 - HTML5先行者学习网
// file drag hover tAEHTML5中文学习网 - HTML5先行者学习网
function FileDragHover(e) { tAEHTML5中文学习网 - HTML5先行者学习网
e.stopPropagation(); tAEHTML5中文学习网 - HTML5先行者学习网
e.preventDefault(); tAEHTML5中文学习网 - HTML5先行者学习网
e.target.className = (e.type == "dragover" ? "hover" : ""); tAEHTML5中文学习网 - HTML5先行者学习网
} tAEHTML5中文学习网 - HTML5先行者学习网
// file selection tAEHTML5中文学习网 - HTML5先行者学习网
function FileSelectHandler(e) { tAEHTML5中文学习网 - HTML5先行者学习网
// cancel event and hover styling tAEHTML5中文学习网 - HTML5先行者学习网
FileDragHover(e); tAEHTML5中文学习网 - HTML5先行者学习网
// fetch FileList object tAEHTML5中文学习网 - HTML5先行者学习网
var files = e.target.files || e.dataTransfer.files; tAEHTML5中文学习网 - HTML5先行者学习网
// process all File objects tAEHTML5中文学习网 - HTML5先行者学习网
for ( var i = 0, f; f = files[i]; i++) { tAEHTML5中文学习网 - HTML5先行者学习网
ParseFile(f); tAEHTML5中文学习网 - HTML5先行者学习网
upfiles.push(f); tAEHTML5中文学习网 - HTML5先行者学习网
} tAEHTML5中文学习网 - HTML5先行者学习网
} tAEHTML5中文学习网 - HTML5先行者学习网
// output file information tAEHTML5中文学习网 - HTML5先行者学习网
function ParseFile(file) { tAEHTML5中文学习网 - HTML5先行者学习网
Output("<p>文件信息: <strong>" + file.name tAEHTML5中文学习网 - HTML5先行者学习网
+ "</strong> 类型: <strong>" + file.type tAEHTML5中文学习网 - HTML5先行者学习网
+ "</strong> 大小: <strong>" + file.size tAEHTML5中文学习网 - HTML5先行者学习网
+ "</strong> bytes</p>"); tAEHTML5中文学习网 - HTML5先行者学习网
} tAEHTML5中文学习网 - HTML5先行者学习网
function upLoad() { tAEHTML5中文学习网 - HTML5先行者学习网
if (upfiles[0]) { tAEHTML5中文学习网 - HTML5先行者学习网
var xhr = new XMLHttpRequest(); //Ajax异步传输数据 tAEHTML5中文学习网 - HTML5先行者学习网
xhr.open("POST", "UploadServlet", true); tAEHTML5中文学习网 - HTML5先行者学习网
var formData = new FormData(); tAEHTML5中文学习网 - HTML5先行者学习网
for ( var i = 0, f; f = upfiles[i]; i++) { tAEHTML5中文学习网 - HTML5先行者学习网
formData.append('myfile', f); tAEHTML5中文学习网 - HTML5先行者学习网
} tAEHTML5中文学习网 - HTML5先行者学习网
xhr.send(formData); tAEHTML5中文学习网 - HTML5先行者学习网
xhr.onreadystatechange=function(e){ tAEHTML5中文学习网 - HTML5先行者学习网
history.go(0); //由于这个页面还要显示可以下载的文件,所以需要刷新下页面 tAEHTML5中文学习网 - HTML5先行者学习网
} tAEHTML5中文学习网 - HTML5先行者学习网
return false; tAEHTML5中文学习网 - HTML5先行者学习网
} tAEHTML5中文学习网 - HTML5先行者学习网
} tAEHTML5中文学习网 - HTML5先行者学习网
// initialize tAEHTML5中文学习网 - HTML5先行者学习网
function Init() { tAEHTML5中文学习网 - HTML5先行者学习网
var fileselect = $id("fileselect"), filedrag = $id("filedrag"), submitbutton = $id("submitbutton"); tAEHTML5中文学习网 - HTML5先行者学习网
// file select tAEHTML5中文学习网 - HTML5先行者学习网
fileselect.addEventListener("change", FileSelectHandler, false); tAEHTML5中文学习网 - HTML5先行者学习网
// is XHR2 available? tAEHTML5中文学习网 - HTML5先行者学习网
var xhr = new XMLHttpRequest(); tAEHTML5中文学习网 - HTML5先行者学习网
if (xhr.upload) { tAEHTML5中文学习网 - HTML5先行者学习网
// file drop tAEHTML5中文学习网 - HTML5先行者学习网
filedrag.addEventListener("dragover", FileDragHover, false); tAEHTML5中文学习网 - HTML5先行者学习网
filedrag.addEventListener("dragleave", FileDragHover, false); tAEHTML5中文学习网 - HTML5先行者学习网
filedrag.addEventListener("drop", FileSelectHandler, false); tAEHTML5中文学习网 - HTML5先行者学习网
filedrag.style.display = "block"; tAEHTML5中文学习网 - HTML5先行者学习网
// remove submit button tAEHTML5中文学习网 - HTML5先行者学习网
//submitbutton.style.display = "none"; tAEHTML5中文学习网 - HTML5先行者学习网
} tAEHTML5中文学习网 - HTML5先行者学习网
} tAEHTML5中文学习网 - HTML5先行者学习网
// call initialization file tAEHTML5中文学习网 - HTML5先行者学习网
if (window.File && window.FileList && window.FileReader) { tAEHTML5中文学习网 - HTML5先行者学习网
Init(); tAEHTML5中文学习网 - HTML5先行者学习网
} tAEHTML5中文学习网 - HTML5先行者学习网
</script> tAEHTML5中文学习网 - HTML5先行者学习网
</body> tAEHTML5中文学习网 - HTML5先行者学习网
</html> tAEHTML5中文学习网 - HTML5先行者学习网
tAEHTML5中文学习网 - HTML5先行者学习网
附上后台处理上传下载的servlet,用了smartUpLoad,不能很好的解决中文问题: tAEHTML5中文学习网 - HTML5先行者学习网

复制代码
代码如下:
tAEHTML5中文学习网 - HTML5先行者学习网
package com.hit.software; tAEHTML5中文学习网 - HTML5先行者学习网
import java.io.IOException; tAEHTML5中文学习网 - HTML5先行者学习网
import javax.servlet.ServletConfig; tAEHTML5中文学习网 - HTML5先行者学习网
import javax.servlet.ServletException; tAEHTML5中文学习网 - HTML5先行者学习网
import javax.servlet.annotation.WebServlet; tAEHTML5中文学习网 - HTML5先行者学习网
import javax.servlet.http.HttpServlet; tAEHTML5中文学习网 - HTML5先行者学习网
import javax.servlet.http.HttpServletRequest; tAEHTML5中文学习网 - HTML5先行者学习网
import javax.servlet.http.HttpServletResponse; tAEHTML5中文学习网 - HTML5先行者学习网
import com.jspsmart.upload.Files; tAEHTML5中文学习网 - HTML5先行者学习网
import com.jspsmart.upload.SmartUpload; tAEHTML5中文学习网 - HTML5先行者学习网
/** tAEHTML5中文学习网 - HTML5先行者学习网
* Servlet implementation class UploadServlet tAEHTML5中文学习网 - HTML5先行者学习网
*/ tAEHTML5中文学习网 - HTML5先行者学习网
@WebServlet("/UploadServlet") tAEHTML5中文学习网 - HTML5先行者学习网
public class UploadServlet extends HttpServlet { tAEHTML5中文学习网 - HTML5先行者学习网
private static final long serialVersionUID = 1L; tAEHTML5中文学习网 - HTML5先行者学习网
private ServletConfig config; tAEHTML5中文学习网 - HTML5先行者学习网
final public void init(ServletConfig config) throws ServletException { tAEHTML5中文学习网 - HTML5先行者学习网
this.config = config; tAEHTML5中文学习网 - HTML5先行者学习网
} tAEHTML5中文学习网 - HTML5先行者学习网
/** tAEHTML5中文学习网 - HTML5先行者学习网
* @see HttpServlet#HttpServlet() tAEHTML5中文学习网 - HTML5先行者学习网
*/ tAEHTML5中文学习网 - HTML5先行者学习网
public UploadServlet() { tAEHTML5中文学习网 - HTML5先行者学习网
super(); tAEHTML5中文学习网 - HTML5先行者学习网
// TODO Auto-generated constructor stub tAEHTML5中文学习网 - HTML5先行者学习网
} tAEHTML5中文学习网 - HTML5先行者学习网
/** tAEHTML5中文学习网 - HTML5先行者学习网
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse tAEHTML5中文学习网 - HTML5先行者学习网
* response) tAEHTML5中文学习网 - HTML5先行者学习网
*/ tAEHTML5中文学习网 - HTML5先行者学习网
protected void doGet(HttpServletRequest request, tAEHTML5中文学习网 - HTML5先行者学习网
HttpServletResponse response) throws ServletException, IOException { tAEHTML5中文学习网 - HTML5先行者学习网
doPost(request, response); tAEHTML5中文学习网 - HTML5先行者学习网
} tAEHTML5中文学习网 - HTML5先行者学习网
/** tAEHTML5中文学习网 - HTML5先行者学习网
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse tAEHTML5中文学习网 - HTML5先行者学习网
* response) tAEHTML5中文学习网 - HTML5先行者学习网
*/ tAEHTML5中文学习网 - HTML5先行者学习网
protected void doPost(HttpServletRequest request, tAEHTML5中文学习网 - HTML5先行者学习网
HttpServletResponse response) throws ServletException, IOException { tAEHTML5中文学习网 - HTML5先行者学习网
request.setCharacterEncoding("UTF-8"); tAEHTML5中文学习网 - HTML5先行者学习网
// String s = request.getParameter("pic"); tAEHTML5中文学习网 - HTML5先行者学习网
// System.out.println(s); tAEHTML5中文学习网 - HTML5先行者学习网
SmartUpload mySmartUpload = new SmartUpload(); tAEHTML5中文学习网 - HTML5先行者学习网
try { tAEHTML5中文学习网 - HTML5先行者学习网
mySmartUpload.initialize(config, request, response); tAEHTML5中文学习网 - HTML5先行者学习网
mySmartUpload.setMaxFileSize(150 * 1024 * 1024); tAEHTML5中文学习网 - HTML5先行者学习网
mySmartUpload.setTotalMaxFileSize(150 * 1024 * 1024); tAEHTML5中文学习网 - HTML5先行者学习网
// mySmartUpload.setAllowedFilesList("doc,txt,rar,pdf,png"); tAEHTML5中文学习网 - HTML5先行者学习网
mySmartUpload.setDeniedFilesList("exe"); tAEHTML5中文学习网 - HTML5先行者学习网
mySmartUpload.upload(); tAEHTML5中文学习网 - HTML5先行者学习网
Files f = mySmartUpload.getFiles(); tAEHTML5中文学习网 - HTML5先行者学习网
int size = f.getCount(); tAEHTML5中文学习网 - HTML5先行者学习网
for (int i = 0; i < size; ++i) { tAEHTML5中文学习网 - HTML5先行者学习网
String fileName = mySmartUpload.getFiles().getFile(i) tAEHTML5中文学习网 - HTML5先行者学习网
.getFileName(); tAEHTML5中文学习网 - HTML5先行者学习网
fileName = new String(fileName.trim().getBytes(), "UTF-8"); //能解决部分中文问题 tAEHTML5中文学习网 - HTML5先行者学习网
System.out.println("filename=" + fileName); tAEHTML5中文学习网 - HTML5先行者学习网
if (!fileName.equals("")) { tAEHTML5中文学习网 - HTML5先行者学习网
String path = "g:/defggg/" + fileName; tAEHTML5中文学习网 - HTML5先行者学习网
f.getFile(i).saveAs(path, SmartUpload.SAVE_PHYSICAL); tAEHTML5中文学习网 - HTML5先行者学习网
} tAEHTML5中文学习网 - HTML5先行者学习网
} tAEHTML5中文学习网 - HTML5先行者学习网
} catch (Exception e) { tAEHTML5中文学习网 - HTML5先行者学习网
e.printStackTrace(); tAEHTML5中文学习网 - HTML5先行者学习网
System.out.println("Unable to upload the file."); tAEHTML5中文学习网 - HTML5先行者学习网
System.out.println("Error :" + e.toString()); tAEHTML5中文学习网 - HTML5先行者学习网
} tAEHTML5中文学习网 - HTML5先行者学习网
response.sendRedirect("index.jsp"); tAEHTML5中文学习网 - HTML5先行者学习网
} tAEHTML5中文学习网 - HTML5先行者学习网
} tAEHTML5中文学习网 - HTML5先行者学习网
tAEHTML5中文学习网 - HTML5先行者学习网

复制代码
代码如下:
tAEHTML5中文学习网 - HTML5先行者学习网
package com.hit.software; tAEHTML5中文学习网 - HTML5先行者学习网
import java.io.File; tAEHTML5中文学习网 - HTML5先行者学习网
import java.io.IOException; tAEHTML5中文学习网 - HTML5先行者学习网
import javax.servlet.ServletConfig; tAEHTML5中文学习网 - HTML5先行者学习网
import javax.servlet.ServletException; tAEHTML5中文学习网 - HTML5先行者学习网
import javax.servlet.annotation.WebServlet; tAEHTML5中文学习网 - HTML5先行者学习网
import javax.servlet.http.HttpServlet; tAEHTML5中文学习网 - HTML5先行者学习网
import javax.servlet.http.HttpServletRequest; tAEHTML5中文学习网 - HTML5先行者学习网
import javax.servlet.http.HttpServletResponse; tAEHTML5中文学习网 - HTML5先行者学习网
import javax.servlet.jsp.JspFactory; tAEHTML5中文学习网 - HTML5先行者学习网
import javax.servlet.jsp.JspWriter; tAEHTML5中文学习网 - HTML5先行者学习网
import javax.servlet.jsp.PageContext; tAEHTML5中文学习网 - HTML5先行者学习网
import com.jspsmart.upload.SmartUpload; tAEHTML5中文学习网 - HTML5先行者学习网
import com.jspsmart.upload.SmartUploadException; tAEHTML5中文学习网 - HTML5先行者学习网
/** tAEHTML5中文学习网 - HTML5先行者学习网
* Servlet implementation class DownloadServlet tAEHTML5中文学习网 - HTML5先行者学习网
*/ tAEHTML5中文学习网 - HTML5先行者学习网
@WebServlet("/DownloadServlet") tAEHTML5中文学习网 - HTML5先行者学习网
public class DownloadServlet extends HttpServlet { tAEHTML5中文学习网 - HTML5先行者学习网
private static final long serialVersionUID = 1L; tAEHTML5中文学习网 - HTML5先行者学习网
private ServletConfig config; tAEHTML5中文学习网 - HTML5先行者学习网
/** tAEHTML5中文学习网 - HTML5先行者学习网
* @see HttpServlet#HttpServlet() tAEHTML5中文学习网 - HTML5先行者学习网
*/ tAEHTML5中文学习网 - HTML5先行者学习网
public DownloadServlet() { tAEHTML5中文学习网 - HTML5先行者学习网
super(); tAEHTML5中文学习网 - HTML5先行者学习网
// TODO Auto-generated constructor stub tAEHTML5中文学习网 - HTML5先行者学习网
} tAEHTML5中文学习网 - HTML5先行者学习网
final public void init(ServletConfig config) throws ServletException { tAEHTML5中文学习网 - HTML5先行者学习网
this.config = config; tAEHTML5中文学习网 - HTML5先行者学习网
} tAEHTML5中文学习网 - HTML5先行者学习网
/** tAEHTML5中文学习网 - HTML5先行者学习网
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse tAEHTML5中文学习网 - HTML5先行者学习网
* response) tAEHTML5中文学习网 - HTML5先行者学习网
*/ tAEHTML5中文学习网 - HTML5先行者学习网
protected void doGet(HttpServletRequest request, tAEHTML5中文学习网 - HTML5先行者学习网
HttpServletResponse response) throws ServletException, IOException { tAEHTML5中文学习网 - HTML5先行者学习网
doPost(request, response); tAEHTML5中文学习网 - HTML5先行者学习网
} tAEHTML5中文学习网 - HTML5先行者学习网
/** tAEHTML5中文学习网 - HTML5先行者学习网
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse tAEHTML5中文学习网 - HTML5先行者学习网
* response) tAEHTML5中文学习网 - HTML5先行者学习网
*/ tAEHTML5中文学习网 - HTML5先行者学习网
protected void doPost(HttpServletRequest request, tAEHTML5中文学习网 - HTML5先行者学习网
HttpServletResponse response) throws ServletException, IOException { tAEHTML5中文学习网 - HTML5先行者学习网
request.setCharacterEncoding("UTF-8"); tAEHTML5中文学习网 - HTML5先行者学习网
String fileName = request.getParameter("filename"); tAEHTML5中文学习网 - HTML5先行者学习网
System.out.println("down :"+fileName); tAEHTML5中文学习网 - HTML5先行者学习网
if (fileName == null) { tAEHTML5中文学习网 - HTML5先行者学习网
response.sendRedirect("index.jsp"); tAEHTML5中文学习网 - HTML5先行者学习网
return; tAEHTML5中文学习网 - HTML5先行者学习网
} tAEHTML5中文学习网 - HTML5先行者学习网
fileName = "G://defggg//" + fileName; tAEHTML5中文学习网 - HTML5先行者学习网
File f = new File(fileName); tAEHTML5中文学习网 - HTML5先行者学习网
if (f.exists() && f.isFile()) { tAEHTML5中文学习网 - HTML5先行者学习网
SmartUpload su = new SmartUpload(); tAEHTML5中文学习网 - HTML5先行者学习网
su.initialize(config, request, response); tAEHTML5中文学习网 - HTML5先行者学习网
su.setContentDisposition(null); tAEHTML5中文学习网 - HTML5先行者学习网
try { tAEHTML5中文学习网 - HTML5先行者学习网
su.downloadFile(fileName); tAEHTML5中文学习网 - HTML5先行者学习网
} catch (SmartUploadException e) { tAEHTML5中文学习网 - HTML5先行者学习网
// TODO Auto-generated catch block tAEHTML5中文学习网 - HTML5先行者学习网
e.printStackTrace(); tAEHTML5中文学习网 - HTML5先行者学习网
} tAEHTML5中文学习网 - HTML5先行者学习网
} else { tAEHTML5中文学习网 - HTML5先行者学习网
response.sendRedirect("index.jsp"); tAEHTML5中文学习网 - HTML5先行者学习网
return; tAEHTML5中文学习网 - HTML5先行者学习网
} tAEHTML5中文学习网 - HTML5先行者学习网
} tAEHTML5中文学习网 - HTML5先行者学习网
} tAEHTML5中文学习网 - HTML5先行者学习网
tAEHTML5中文学习网 - HTML5先行者学习网

tAEHTML5中文学习网 - HTML5先行者学习网
(责任编辑:)
推荐书籍
推荐资讯
关于HTML5先行者 - 联系我们 - 广告服务 - 友情链接 - 网站地图 - 版权声明 - 人才招聘 - 帮助