java实现文件的上传与下载
(一)文件的上传:在这一部分,我要将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实现文件的上传与下载的更多相关文章
- java客户端文件的上传和下载
java客户端文件的上传和下载 //上传 public JTable upload(String id){ JTable table=new JTable(); System.out.println( ...
- java实现文件的上传和下载
1. servlet 如何实现文件的上传和下载? 1.1上传文件 参考自:http://blog.csdn.net/hzc543806053/article/details/7524491 通过前台选 ...
- Java中文件的上传与下载
文件的上传与下载主要用到两种方法: 1.方法一:commons-fileupload.jar commons-io.jar apache的commons-fileupload实现文件上传,下载 [u ...
- java+实现文件的上传和下载
项目截图 路径配置 将localhost:8080/up6全部替换为实际项目路径 使用mysql文件夹下的脚本创建数据表. 创建后可以在数据库中看到创建好的数据表 2.修改数据库连接 3.修改上传地址 ...
- java+web文件的上传和下载代码
一般10M以下的文件上传通过设置Web.Config,再用VS自带的FileUpload控件就可以了,但是如果要上传100M甚至1G的文件就不能这样上传了.我这里分享一下我自己开发的一套大文件上传控件 ...
- java实现ftp文件的上传与下载
最近在做ftp文件的上传与下载,基于此,整理了一下资料.本来想采用java自带的方法,可是看了一下jdk1.6与1.7的实现方法有点区别,于是采用了Apache下的框架实现的... 1.首先引用3个包 ...
- 初学Java Web(7)——文件的上传和下载
文件上传 文件上传前的准备 在表单中必须有一个上传的控件 <input type="file" name="testImg"/> 因为 GET 方式 ...
- java web(四):request、response一些用法和文件的上传和下载
上一篇讲了ServletContent.ServletCOnfig.HTTPSession.request.response几个对象的生命周期.作用范围和一些用法.今天通过一个小项目运用这些知识.简单 ...
- java 文件的上传和下载
主要介绍使用 smartupload.jar 包中的方法对文件的上传和下载.上传时文件是存放在服务器中,我用的是tamcat. 首先建立一个servlet 类,对文件的操作 package com.d ...
随机推荐
- 流媒体应用程序Mobdro或存在安全隐患
Mobdro是一款流媒体应用程序,可以安装在任何Android设备上,包括手机,平板电脑,亚马逊的Fire TV Stick和Google的Chromecast.它现在已经流行了一段时间,特别是在围绕 ...
- 开放个人电脑端口[Windows]
先打开控制面板
- 一个学习scrapy的网站
当然是scrapy中文网辣,从浅到深,例子报错几乎都有 http://www.scrapyd.cn/doc/
- Sublime Text 3 Package Control安装
本系列文章由 @yhl_leo 出品,转载请注明出处. 文章链接: http://blog.csdn.net/yhl_leo/article/details/50618314 安装好Sublime T ...
- n个骰子,和为x的概率分别是多少
开始我居然又没有想出来.. 还是看了解法.开始的时候,一直想的是用概率,百分比来求,后来才发现,用次数来求,最后除一下,更近清晰. 方法,可以是递归,每次多一个骰子的时候,次数分别加上个数以及上一次i ...
- Mysql数据库事务的隔离级别和锁的实现原理分析
Mysql数据库事务的隔离级别和锁的实现原理分析 找到大神了:http://blog.csdn.net/tangkund3218/article/details/51753243 InnoDB使用MV ...
- ZOJ 3690 Choosing number(dp矩阵优化)
Choosing number Time Limit: 2 Seconds Memory Limit: 65536 KB There are n people standing in a r ...
- .Net MVC的学习(一)
套种间作,也挺有意思的--近来学习感悟.DRP学习的同一时候,折腾了点曾经不曾学习可是却非常多次耳闻过的东西--Asp.Net中的MVC架构模式. 一.是什么? MVC,即(Model-View-Co ...
- 利用wget 抓取 网站网页 包括css背景图片
利用wget 抓取 网站网页 包括css背景图片 wget是一款非常优秀的http/ftp下载工具,它功能强大,而且几乎所有的unix系统上都有.不过用它来dump比较现代的网站会有一个问题:不支持c ...
- node13---node使用mongodb
01.js /** *最先的后台语言是Asp(微软的), */ var express = require("express"); //数据库引用 var MongoClient ...