博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java 拖拽上传_Java实现拖拽上传
阅读量:5106 次
发布时间:2019-06-13

本文共 3013 字,大约阅读时间需要 10 分钟。

Java实现拖拽上传

在项目开发中由于实际需求,需要开发拖拽上传的功能,ok!

先看效果图:

0818b9ca8b590ca3270a3433284dd417.png

html>

小夜的传说最新力作!

* {

padding: 0px;

margin: 0px;

}

body {

background: #394E48;

font-size: 14px;

font-family: "微软雅黑";

}

.title {

text-align: center;

color: #fff;

margin-top: 50px;

}

.demo {

width: 900px;

height: 140px;

margin: 50px auto;

}

.drag-area {

width: 100%;

height: 100px;

border: 3px dashed #fff;

text-align: center;

line-height: 100px;

color: #fff;

font-size: 36px;

font-weight: 700;

}

}

.preview div {

width: 195px;

overflow: hidden;

border: 1px dashed silver;

margin-top: 10px;

float: left;

padding: 9px;

text-align: center;

height: 168px;

}

.preview img {

width: 80px;

height: 80px;

}

小夜的传说最新力作!Java实现拖拽上传!!

将图片拖拽到这里

//1、文件上传HTML5 通过drag把文件拖拽到浏览器的默认事件覆盖

//文件离开

document.οndragleave=function(e){

e.preventDefault();

console.info("文件离开执行了我!!");

};

//鼠标松开文件

document.οndrοp=function(e){

e.preventDefault();

console.info("松开以后执行了我!");

};

//鼠标移动文件

document.οndragοver=function(e){

e.preventDefault();

console.info("文件移动以后执行了我!");

};

function tm_upload(){

var img1="";

var uploadArea=document.getElementById("upload-area");

//2、通过HTML5拖拽事件,ondrop,然后通过拖动区域监听浏览器的drop事件达到文件上传的目的

uploadArea.addEventListener("drop", function(e){

e.preventDefault();

//3、从事件event中获取拖拽到浏览器的文件信息

var fileList=e.dataTransfer.files;

for(var i=0;i

//此处判断只能上传图片

if(fileList[i].type.indexOf("image")!=0){

alert("请上传图片");

return;

}

//图片预览  这一步需要判断是什么浏览器  大家自己判断吧

/*************************************/

img1=window.URL.createObjectURL(fileList[i]);

/*************************************/

var str="

"+fileList[i].name+"

";

document.getElementById("preview").innerHTML +=str;

var fileName=fileList[i].name;

console.info(fileName);

var fileSize=fileList[i].size;

console.info(fileSize);

//4、通过XMLHttpRequest上传文件到服务器  就是一个ajax请求

var xhr=new XMLHttpRequest();

//5、这里需要先写好一个data.jsp的上传文件,当然,你写成servlet或者是action都可以

xhr.open("post","data.jsp",true);

xhr.setRequestHeader("X-Request-Width", "XMLHttpRequest");

//6、通过HTML5 FormData动态设置表单元素

var formData=new FormData();//动态给表单赋值,传递二进制文件

//其实就相当于

formData.append("doc",fileList[i]);

//7、这一步核心的我隐藏了,需要的话请下载源码,或者看你悟性了

}

});

}

//直接调用

tm_upload();

ok,编写完前台代码,在写后台,如下:

pageEncoding="UTF-8"%>

/*

1、文件上传:

*/

request.setCharacterEncoding("utf-8");

response.setCharacterEncoding("utf-8");

//获取文件路径

String strPath=request.getRealPath("/")+"/upload";

File file =new File(strPath);

if(!file.exists())file.mkdirs();

FileItemFactory factory=new DiskFileItemFactory();

ServletFileUpload upload=new ServletFileUpload(factory);

//从请求对象中获取文件信息

List items=upload.parseRequest(request);

if(items!=null){

for(int i=0;i

Iterator iterator=items.iterator();

while(iterator.hasNext()){

FileItem item=(FileItem)iterator.next();

if(item.isFormField()){

continue;

}else{

String fileName=item.getName();

Long fileSize=item.getSize();

int pos=fileName.indexOf(".");

String ext=fileName.substring(pos,fileName.length());

fileName=UUID.randomUUID().toString()+ext;

File saveFile=new File(strPath,fileName);

item.write(saveFile);

}

}

}

}

%>

ok,至此,就完成拖拽上传的功能,当然这只是粗略版本,我已将代码优化为插件可以直接使用了!!

转载地址:http://bqudv.baihongyu.com/

你可能感兴趣的文章
Cadence Allegro 如何关闭铺铜(覆铜)shape的显示和设置shape显示模式–allegro小技巧...
查看>>
Atcoder Grand Contest 004 题解
查看>>
MFC中 给对话框添加背景图片
查看>>
alter database databasename set single_user with rollback IMMEDIATE 不成功问题
查看>>
idea 系列破解
查看>>
Repeater + Resources 列表 [原创][分享]
查看>>
c# Resolve SQlite Concurrency Exception Problem (Using Read-Write Lock)
查看>>
dependency injection
查看>>
WCF揭秘——使用AJAX+WCF服务进行页面开发
查看>>
C#综合揭秘——细说多线程(下)
查看>>
c#运算符 ?
查看>>
ps互补色
查看>>
Silverlight学习笔记(九)-----RenderTransform特效【五种基本变换】及【矩阵变换MatrixTransform】...
查看>>
【题解】青蛙的约会
查看>>
【eclipse】点Clean后没反应
查看>>
springboot下html的js中使用shiro标签功能
查看>>
求给定字符串的最长子字符串
查看>>
.26-浅析webpack源码之事件流make(1)
查看>>
IO流
查看>>
mybatis调用存储过程,获取返回的游标
查看>>