文件拖动上传jsp

在大型企业的开发过程中,很多比较有趣而实际的功能往往都是让大家望而却步,我给大家带来一个百度云盘和360云盘的HTML5多文件拖动上传技术:
1:记得导入:common-fileupload.jar包.

上传upload.jsp页面
<%@page import="org.apache.struts2.json.JSONUtil"%>
<%@page import="java.io.File"%>
<%@page import="org.apache.commons.fileupload.FileItem"%>
<%@page import="org.apache.commons.fileupload.servlet.ServletFileUpload"%>
<%@page import="org.apache.commons.fileupload.disk.DiskFileItemFactory"%>
<%@page import="org.apache.commons.fileupload.FileItemFactory"%>
<%@page import="java.text.DecimalFormat"%>
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
 request.setCharacterEncoding("UTF-8");
 response.setCharacterEncoding("UTF-8");
 //获取文件的上传的具体目录
 String realPath = request.getRealPath("/");
 //定义上传的目录
 String dirPath = realPath+"/upload";
 File dirFile = new File(dirPath);
 //自动创建上传的目录
 if(!dirFile.exists())dirFile.mkdirs();
 //上传操作
  FileItemFactory factory = new DiskFileItemFactory();
 //
   ServletFileUpload upload = new ServletFileUpload(factory);
 String fileName = null;
 HashMap<String,Object> map = new HashMap<String,Object>();
  try{
      List items = upload.parseRequest(request);  //3name=null name=null
   if(null != items){
          Iterator itr = items.iterator();
          while(itr.hasNext()){
              FileItem item = (FileItem)itr.next();
              if(item.isFormField()){
                  continue;
              }else{
              fileName = item.getName();
              int pos = fileName.lastIndexOf(".");
              String ext = fileName.substring(pos, fileName.length());
                 fileName = UUID.randomUUID().toString()+ext;
 //上传文件的目录
                 File savedFile = new File(dirPath,fileName);
                 item.write(savedFile);
                 map.put("name",item.getName());//文件的原始名称
                 map.put("newName",fileName);//文件的新名称
                 map.put("size",item.getSize());//文件的真实大小
                 map.put("url","upload/"+fileName);//获取文件的具体服务器的目录
                 //我可以建立一个文件表。把上传的文件存在表中.--文件夹表一个文件表---云盘
              }
          }
   }
 }catch(Exception e){  

 }
  out.print(JSONUtil.serialize(map));
%>
main.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML>
<html>
  <head>
    <title>html5拖动文件上传</title>
 <style>
 *{padding:0px;margin:0px}
 body{font-family: "微软雅黑";font-size: 12px;background: #394E48;color:#fff;}
 .demo{width:900px; margin:50px auto;position: relative;}
 #drop_area{width:100%; height:100px; border:3px dashed silver; line-height:100px; text-align:center; font-size:36px; color:#d3d3d3}
 #preview{width:900px; overflow:hidden;border:1px dashed silver; margin-top:10px;}
 #preview div{float: left;padding: 9px;text-align: center;margin:6px;background:#f9f9f9;width:195px;height: 160px;}
 #preview img{width: 80px;height: 80px;}
 #program{background:#999; height:100px;color:#d3d3d3;position: absolute;top:0px;left:0px;background:linear-gradient(#141414,red);opacity:0.5}
 </style>
  </head>
  <body>
   <div id="main">
    <div class="demo">
     <div style="text-align: center;margin-bottom: 20px;"><h1 style="font-size: 36px;"></h1></div>
     <div id="program"></div>
 <div id="drop_area">将图片拖拽到此区域</div>
 <div id="preview"></div>
    </div>
 </div>

   <script type="text/javascript">

   var timer = null;
   //拖离事件-离开的时候调用
   document.ondragleave =function(e){
   e.preventDefault();
   document.getElementById("drop_area").style.background="none";
   console.log("拖动移动离开的时候");
   };

   //拖方后
   document.ondrop =function(e){
   e.preventDefault();
   document.getElementById("drop_area").style.background="none";
   document.getElementById("drop_area").innerHTML = "请稍后,文件上传中...";
   var p = 0;
   timer = setInterval(function(){
   if(p>=100)p=0;
   document.getElementById("program").style.width=p+"%";
   p++;
   },17);
   console.log("拖动抬起的时候");
   };

   //拖动移动的时候
   document.ondragover =function(e){
   e.preventDefault();
   document.getElementById("drop_area").style.background="linear-gradient(#141414,#ff0000)";
   console.log("拖动移动的时候");
   };

   document.ondragenter =function(e){
   e.preventDefault();
   document.getElementById("drop_area").style.background="#141414";
   console.log("拖动按下的时候");
   };

   function tmupload(){
   var box = document.getElementById("drop_area"); //拖拽区域
   box.addEventListener("drop",function(e){//监听拖放后事件
   e.preventDefault();//取消浏览器的默认行为
   //获取文件对象
   var fileList = e.dataTransfer.files;
   //检查是否拖拽文件到页面
   var length = fileList.length;
   if(length==0){
   return false;
   }

   for(var i=0;i<length;i++){
   var img = window.webkitURL.createObjectURL(fileList[i]);
   var filename = fileList[i].name;
   var filesize = fileList[i].size;
   var str = "<div><img src=‘"+img+"‘><p>图片名称:"+filename+"</p><p>大小:"+filesize+"KB</p></div>";
   document.getElementById("preview").innerHTML +=str;

   //通过XMLHttpRequest(ajax)上传
   var xhr = new XMLHttpRequest();
   xhr.open("post","upload.jsp", true);
   xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest");
   //利用FormData动态发送表单数据
   var fd = new FormData();
   fd.append("doc", fileList[i]);
   xhr.send(fd);

   xhr.onreadystatechange = function(){
   if(xhr.readyState==4 && xhr.status==200){
   setTimeout(function(){
    clearInterval(timer);
    document.getElementById("drop_area").innerHTML = "请稍后,文件上传中...";
    document.getElementById("program").style.width="0%";
   },2000);
   }
   };

   }
   });
   }

   tmupload();//开始上传
   </script>
  </body>
</html>
时间: 2024-12-18 16:54:00

文件拖动上传jsp的相关文章

HTML实现文件拖动上传

在大型企业的开发过程中,很多比较有趣而实际的功能往往都是让大家望而却步,我给大家带来一个百度云盘和360云盘的HTML5多文件拖动上传技术: 1:记得导入:common-fileupload.jar包. 上传upload.jsp页面 <%@page import="org.apache.struts2.json.JSONUtil"%> <%@page import="java.io.File"%> <%@page import=&quo

html5+php实现文件拖动上传功能

界面样式我是参考了一个国外的相册网站,改动不大,只是把鸟语转换成中文,以及上传时的样式也进行了改动,之所以选这个的原因就是,我很容易做扩展,它支持3种方式添加图片,一种拖拽上传,一种常规的选择文件上传,另外的就是添加网络图片.它很巧妙的把三种上传模式整合到了一起,而且你可以用IE浏览器浏览下,如果不支持HTML5,是没有拖拽上传图片的提示的,如图: 拖拽上传最重要的就是js部分的代码,它实现了70%的功能,另外30%仅仅是把图片信息提交到后台,然后做对应的处理,比如压缩啊,裁剪啊云云.所以先来看

JSP使用jspsmartupload实现文件的上传

这个程序出现点问题,输入的只要是中文,都会出现乱码,自己经过各种各样的方法,还是无法解决,哪位大神能赐教一下…… :uploadFileForm.jsp <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><% String path = request.getContextPath(); String basePath = request.ge

JSP中文件的上传于下载示例

一.文件上传的原理 1.文件上传的前提: a.form表单的method必须是post b.form表单的enctype必须是multipart/form-data(决定了POST请求方式,请求正文的数据类型) 注意:当表单的enctype是multipart/form-data,传统的获取请求参数的方法失效. 请求正文:(MIME协议进行描述的,正文是多部分组成的) -----------------------------7dd32c39803b2 Content-Disposition:

JSP如何实现文件断点上传和断点下载?

核心原理: 该项目核心就是文件分块上传.前后端要高度配合,需要双方约定好一些数据,才能完成大文件分块,我们在项目中要重点解决的以下问题. * 如何分片: * 如何合成一个文件: * 中断了从哪个分片开始. 如何分,利用强大的js库,来减轻我们的工作,市场上已经能有关于大文件分块的轮子,虽然程序员的天性曾迫使我重新造轮子.但是因为时间的关系还有工作的关系,我只能罢休了.最后我选择了百度的WebUploader来实现前端所需. 如何合,在合之前,我们还得先解决一个问题,我们如何区分分块所属那个文件的

jsp+servlet怎么实现文件断点上传下载

我们平时经常做的是上传文件,上传文件夹与上传文件类似,但也有一些不同之处,这次做了上传文件夹就记录下以备后用. 这次项目的需求: 支持大文件的上传和续传,要求续传支持所有浏览器,包括ie6,ie7,ie8,ie9,Chrome,Firefox,360安全浏览器,并且刷新浏览器后仍然能够续传,重启浏览器(关闭浏览器后再打开)仍然能够继续上传,重启电脑后仍然能够上传 支持文件夹的上传,要求服务端能够保留层级结构,并且能够续传.需要支持10万个以上的文件夹上传. 支持低版本的系统和浏览器,因为这个项目

用struts2实现文件的上传下载

在做B/S系统时经常会有文件上传下载的需求,现就基于struts2框架实现其功能 Struts2框架默认采用Commons-fileupload组件完成文件上传功能.? 使用Struts2框架实现文件上传功能,只需在Action中定义一个java.io.File类型的成员并为之设立setter方法,方法名要和参数名对应.? 客户端上传的文件, Struts2框架会自动将其保存在临时文件中,封装成java.io.File类对象.如果还想得到上传的文件名和文件类型,需按照如下命名规则在Action中

struts2 文件的上传下载 表单的重复提交 自定义拦截器

文件上传中表单的准备 要想使用 HTML 表单上传一个或多个文件 须把 HTML 表单的 enctype 属性设置为 multipart/form-data 须把 HTML 表单的method 属性设置为 post 需添加 <input type=“file”> 字段. Struts 对文件上传的支持 在 Struts 应用程序里, FileUpload 拦截器和 Jakarta Commons FileUpload 组件可以完成文件的上传. 步骤:1. 在 Jsp 页面的文件上传表单里使用

smartupload实现文件的上传、下载

package com.yc.util; import java.io.IOException; import java.sql.SQLException; import java.util.Collection; import java.util.Date; import java.util.Enumeration; import java.util.HashMap; import java.util.Map; import java.util.Random; import javax.ser