(一)文件的上传:在这一部分,我要将execl文件的内容上传到数据库中,完成这一功能。需要分为两步:

1:将文件上传到tomcat下

文件格式如下:

2:读取execl表中的内容到数据库中

首先:下载jar包:

commons-fileupload-1.3.2.jar
commons-io-2.5.jar

前台html和js:

   <input type="hidden" readonly name="src" id="fsrc" value="0" size="60"/>
<input type='text' readonly name='textfield' id='textfield' class='txt' style="height:30px;width:30%;"/>
<input type='button' class='btn' onClick="findFile()" value='浏览...' style="height:30px;background-color:#ff9900;outline:none;border:none;width:10%;" />
<input type="file" name="file" class="file" id="file" size="28" style="display:none;" onchange="document.getElementById('textfield').value=this.value" />
<input type="button" class="btn2" value="上传" onclick="upload()"/>
<a class="btn btn-success" href="lmxx.do?downLoad&fileName='栏目列表.xls'">下载</a>
 function upload(){

     var file="file";
var picElement=document.getElementById(file).value; var picFormat=picElement.substring(picElement.lastIndexOf('.')+1,picElement.length);
if(picFormat!="xls"&&picFormat!="xlsx"){
alert("请选择 excel 2003 (*.xls) 格式的文件!");
return;
} $.ajaxFileUpload({
url:"lmxx.do?upLoadExcel",
secureuri: false,
fileElementId:file,
dataType: 'JSON',
success:function(data){
data=decodeURIComponent(data);//解码
var arr=JSON.parse(data);//JSON.parse() 方法解析一个JSON字符串
$("#fsrc").val(arr.rPath);
$.post(
"lmxx.do?excelToDb&src="+$("#fsrc").val(),
function(data){
//data=decodeURIComponent(data);
//var arr=JSON.parse(data);
if(data==1){
alert("上传成功!");
}else{
alert("上传失败!");
} }
);
},
error: function (){
alert("上传失败!当前时间为:"+new Date().toLocaleTimeString()); }
});
}; function findFile(){
document.getElementById("file").click();
}

后台操作方法:

 @RequestMapping(params="upLoadExcel")
@ResponseBody
public String addFilemsgPic(MultipartFile file,HttpServletRequest request) throws Exception{
String path="/uploadExcelFiles";
path=request.getSession().getServletContext().getRealPath(path);//当前运行文件在服务器上的绝对路径
System.out.println(path);
//创建文件
File dir=new File(path);
if(!dir.exists()){
dir.mkdirs();
}
String uuid=UUID.randomUUID().toString();
//返回原来在客户端的文件系统的文件名
String fileName=file.getOriginalFilename();
//uuid+后缀名
String img=uuid+fileName.substring(fileName.lastIndexOf("."));//lastIndexOf报告指定 Unicode 字符在此实例中的最后一个匹配项的索引位置(即为后缀)。String.Substring (Int32)从此实例检索子字符串
FileOutputStream imgOut=new FileOutputStream(new File(dir,img));//根据 dir 抽象路径名和 img 路径名字符串创建一个新 File 实例。
imgOut.write(file.getBytes());//返回一个字节数组文件的内容
imgOut.close();
Map<String, String> map=new HashMap<String, String>(); map.put("picPath",img);//8b4aff41-420c-419a-b0ab-c18ca36198c6.xls
map.put("picName",fileName);//lanmu.xls
String rpath = path+"\\"+img; map.put("rPath",rpath);
JSONObject jsonObject = JSONObject.fromObject(map);//将json字符串转换为json对象
String r=jsonObject.toString();
String s=URLEncoder.encode(r, "utf-8");//加密
return s;
} @RequestMapping(params="excelToDb")
@ResponseBody
public int excelToDB(String src){ String newSrc = src.replace(" ", "+");
List<Lanmu> lmList=ReadeExcel.taPCL(newSrc);
int flag=ConnOrcl.connToTable(lmList);
if(flag==1)
return 1;
else
return 2;
}
ReadeExcel
 public class ReadeExcel {
public static List<Lanmu> taPCL(String file)
{
List<Lanmu> LTPC = new ArrayList<Lanmu>();
try
{
//选取excel文件
Workbook rwb=Workbook.getWorkbook(new File(file));//获得工作薄(Workbook)
//选取excel文件中的第一个工作薄
Sheet sheet = rwb.getSheet(0);
//得到excel表行数
int RowNum = sheet.getRows();
for(int i=1;i<RowNum;i++)
{
//获得excel表中第1列第i行单元格
Cell cell0 = sheet.getCell(0, i);
//获得excel表中第2列第i行单元格
Cell cell1 = sheet.getCell(1, i);
//获得cell0单元格内容
String name = cell0.getContents();
//获得cell1单元格内容
String state = cell1.getContents();
Lanmu lanmu = new Lanmu();
lanmu.setName(name);
lanmu.setState(state);
LTPC.add(lanmu);
}
}
catch(Exception e)
{
e.printStackTrace();
}
return LTPC;
}
}

ConnOrcl
 public class ConnOrcl {

         private static Connection conn;
private static Statement stat;
private static String driver = "oracle.jdbc.driver.OracleDriver";
private static int SUCCESS=1;
private static int FILE=2;
public static int connToTable(List<Lanmu> lanmus)
{
try
{
//数据库连接
Class.forName(driver);
conn = java.sql.DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:orcl", "GKBMFZXT", "GKBMFZXT");
stat = conn.createStatement();
int flag=0;
//遍历list,插入数据库
for(Lanmu lanmu : lanmus)
{
StringBuffer sql = new StringBuffer();
//构造sql语句
sql.append("insert into lanmu_table (id,name,state) values ('");
String id=UUID.randomUUID().toString().replace("-","");
String name = lanmu.getName();
String state = lanmu.getState();
sql.append(id).append("','");
sql.append(name).append("','");
sql.append(state).append("')");
//执行sql语句
stat.execute(sql.toString());
flag++;
} if(flag==lanmus.size()){
return SUCCESS;
}
}
catch(ClassNotFoundException e)
{
e.printStackTrace();
}
catch(SQLException e)
{
e.printStackTrace();
}
finally
{
if(null != stat)
{
try
{
stat.close();
}
catch (SQLException e)
{
e.printStackTrace();
}
}
if(null != conn)
{
try
{
conn.close();
}
catch (SQLException e)
{
e.printStackTrace();
}
}
}
return FILE;
} }
(二)文件的下载
 @RequestMapping(params="downLoad")
public String downLoad(HttpServletRequest request,HttpServletResponse response)throws Exception{ String fileName=request.getParameter("fileName");
File f=new File("C:\\Users\\ztl\\Desktop\\lanmu.xls"); BufferedInputStream buffer=null;
OutputStream out=null;
try{
if(!f.exists()){ response.sendError(404,"File not find!");
return "File not find!"; }
buffer = new BufferedInputStream(new FileInputStream(f));
byte[] buf = new byte[1024];
int len=0;
response.reset();
response.setContentType("application/vnd.ms-excel");
response.setHeader("Content-Disposition","attachment;filename="+fileName);
out = response.getOutputStream();
while((len = buffer.read(buf))>0){
out.write(buf,0,len);
}
out.flush();
response.flushBuffer(); }catch(Throwable e){
e.printStackTrace();
}finally{ if(out!=null){
out.close();
}
} return "view/luntan/lanmu_list"; }

java实现文件的上传与下载的更多相关文章

  1. java客户端文件的上传和下载

    java客户端文件的上传和下载 //上传 public JTable upload(String id){ JTable table=new JTable(); System.out.println( ...

  2. java实现文件的上传和下载

    1. servlet 如何实现文件的上传和下载? 1.1上传文件 参考自:http://blog.csdn.net/hzc543806053/article/details/7524491 通过前台选 ...

  3. Java中文件的上传与下载

    文件的上传与下载主要用到两种方法: 1.方法一:commons-fileupload.jar  commons-io.jar apache的commons-fileupload实现文件上传,下载 [u ...

  4. java+实现文件的上传和下载

    项目截图 路径配置 将localhost:8080/up6全部替换为实际项目路径 使用mysql文件夹下的脚本创建数据表. 创建后可以在数据库中看到创建好的数据表 2.修改数据库连接 3.修改上传地址 ...

  5. java+web文件的上传和下载代码

    一般10M以下的文件上传通过设置Web.Config,再用VS自带的FileUpload控件就可以了,但是如果要上传100M甚至1G的文件就不能这样上传了.我这里分享一下我自己开发的一套大文件上传控件 ...

  6. java实现ftp文件的上传与下载

    最近在做ftp文件的上传与下载,基于此,整理了一下资料.本来想采用java自带的方法,可是看了一下jdk1.6与1.7的实现方法有点区别,于是采用了Apache下的框架实现的... 1.首先引用3个包 ...

  7. 初学Java Web(7)——文件的上传和下载

    文件上传 文件上传前的准备 在表单中必须有一个上传的控件 <input type="file" name="testImg"/> 因为 GET 方式 ...

  8. java web(四):request、response一些用法和文件的上传和下载

    上一篇讲了ServletContent.ServletCOnfig.HTTPSession.request.response几个对象的生命周期.作用范围和一些用法.今天通过一个小项目运用这些知识.简单 ...

  9. java 文件的上传和下载

    主要介绍使用 smartupload.jar 包中的方法对文件的上传和下载.上传时文件是存放在服务器中,我用的是tamcat. 首先建立一个servlet 类,对文件的操作 package com.d ...

随机推荐

  1. [USACO 2009 Feb Gold] Fair Shuttle (贪心+优先队列)

    题目大意:有N个站点的轻轨站,有一个容量为C的列车起点在1号站点,终点在N号站点,有K组牛群,每组数量为Mi(1≤Mi≤N),行程起点和终点分别为Si和Ei(1≤Si<Ei≤N).计算最多有多少 ...

  2. GRUB 引导流程

    GRUB(bootloader)引导流程:  GRUB,GRand Unified Bootlader ,是一个来自GUN项目的多操作系统启动程序.GRUB是多启动规范的实现,它允许用户可以在计算机内 ...

  3. mkl安装与使用

    mkl安装教程 1.下载 首先到该网站下载压缩包,需要注册 2.安装 首先解压缩 tar -zxvf l_mkl_2019.0.117.tgz 进入目录进行安装 cd l_mkl_2019.0.117 ...

  4. mybatis-plus注解版实现多表联查(sql)

    mybatis注解版实现多表联查 需求: 用户有角色,角色有权限,需要一次取用户信息包含角色信息及其对应权限 实体类: package cn.zytao.taosir.common.model.use ...

  5. ZOJ 3435

    求(1,1,1)至(x,y,z)的互质个数. 即求(0,0,0)到(x-1,y-1,z-1)互质个数. 依然如上题那样做.但很慢...好像还有一个分块的思想,得学学. #include <ios ...

  6. android全磁盘加密

    android 全磁盘加密 什么是全磁盘加密? 全磁盘加密是使用一个密钥来为android设备上全部的用户数据加密的过程.一旦设备被加密,全部的用户创建的数据都将会在提交的磁盘之前自己主动加密,在读取 ...

  7. hdoj 1013Digital Roots

     /*Digital Roots Problem Description The digital root of a positive integer is found by summing th ...

  8. 百度地图-----&gt;地图类型、定位模式、实时交通、我的位置、加入覆盖物、覆盖物详情及提示

    在百度地图开发平台 http://developer.baidu.com/map/index.php? title=androidsdk 进行创建应用,获取应用的AK,在进行下载BaiduLBS_An ...

  9. nyoj--124--中位数(水题)

    中位数 时间限制:3000 ms  |  内存限制:65535 KB 难度:2 描述 一组数据按从小到大的顺序依次排列,处在中间位置的一个数叫做中位数. 比如 1 5 10 11 9  其中位数就是9 ...

  10. 项目结合activiti工作流框架使用

    项目结合activiti工作流框架使用: 1.项目与工作流框架的结合. 2.状态:草稿(待审批).审批中.审批通过.审批失败 3. 提交审批: 0 草稿(待审批),记录绑定工作流执行id,审批状态设置 ...