• java实现文件的上传与下载


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

    1:将文件上传到tomcat下

    文件格式如下:

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

    首先:下载jar包:

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

    前台html和js:

    1   <input type="hidden" readonly name="src" id="fsrc" value="0" size="60"/>
    2      <input type='text' readonly name='textfield' id='textfield' class='txt'  style="height:30px;30%;"/>  
    3      <input type='button' class='btn' onClick="findFile()" value='浏览...' style="height:30px;background-color:#ff9900;outline:none;border:none;10%;" />
    4      <input type="file" name="file" class="file" id="file" size="28"  style="display:none;" onchange="document.getElementById('textfield').value=this.value" />
    5      <input type="button" class="btn2" value="上传" onclick="upload()"/>
    6      <a  class="btn btn-success"  href="lmxx.do?downLoad&fileName='栏目列表.xls'">下载</a>
     1 function upload(){
     2     
     3     var file="file";
     4     var picElement=document.getElementById(file).value;
     5     
     6     var picFormat=picElement.substring(picElement.lastIndexOf('.')+1,picElement.length);
     7     if(picFormat!="xls"&&picFormat!="xlsx"){
     8         alert("请选择 excel 2003 (*.xls) 格式的文件!");
     9         return;
    10     }
    11 
    12     $.ajaxFileUpload({
    13              url:"lmxx.do?upLoadExcel",
    14            secureuri: false,
    15            fileElementId:file,
    16            dataType: 'JSON',
    17            success:function(data){
    18                   data=decodeURIComponent(data);//解码
    19                   var arr=JSON.parse(data);//JSON.parse() 方法解析一个JSON字符串            
    20                 $("#fsrc").val(arr.rPath);         
    21                 $.post(
    22                         "lmxx.do?excelToDb&src="+$("#fsrc").val(),    
    23                         function(data){
    24                             //data=decodeURIComponent(data);
    25                             //var arr=JSON.parse(data);
    26                             if(data==1){
    27                             alert("上传成功!");
    28                             }else{
    29                             alert("上传失败!");
    30                             }
    31 
    32                         }
    33                     );
    34         },
    35         error: function (){
    36                alert("上传失败!当前时间为:"+new Date().toLocaleTimeString());
    37           
    38        }
    39     });
    40 };
    41 
    42 function findFile(){
    43     document.getElementById("file").click();
    44 }

    后台操作方法:

     1 @RequestMapping(params="upLoadExcel") 
     2     @ResponseBody
     3     public String addFilemsgPic(MultipartFile file,HttpServletRequest request) throws Exception{
     4         String path="/uploadExcelFiles";
     5         path=request.getSession().getServletContext().getRealPath(path);//当前运行文件在服务器上的绝对路径
     6         System.out.println(path);
     7         //创建文件 
     8         File dir=new File(path);
     9         if(!dir.exists()){
    10             dir.mkdirs();
    11         }
    12         String uuid=UUID.randomUUID().toString();
    13         //返回原来在客户端的文件系统的文件名
    14         String fileName=file.getOriginalFilename();
    15         //uuid+后缀名
    16         String img=uuid+fileName.substring(fileName.lastIndexOf("."));//lastIndexOf报告指定 Unicode 字符在此实例中的最后一个匹配项的索引位置(即为后缀)。String.Substring (Int32)从此实例检索子字符串
    17         FileOutputStream imgOut=new FileOutputStream(new File(dir,img));//根据 dir 抽象路径名和 img 路径名字符串创建一个新 File 实例。
    18         imgOut.write(file.getBytes());//返回一个字节数组文件的内容
    19         imgOut.close();
    20         Map<String, String> map=new HashMap<String, String>();
    21     
    22         map.put("picPath",img);//8b4aff41-420c-419a-b0ab-c18ca36198c6.xls
    23         map.put("picName",fileName);//lanmu.xls
    24         String rpath = path+"\"+img;
    25     
    26         map.put("rPath",rpath);
    27         JSONObject jsonObject = JSONObject.fromObject(map);//将json字符串转换为json对象
    28         String r=jsonObject.toString();
    29         String s=URLEncoder.encode(r, "utf-8");//加密
    30         return s;
    31     }
    32     
    33     
    34     @RequestMapping(params="excelToDb") 
    35     @ResponseBody
    36     public int excelToDB(String src){
    37     
    38        
    39         String newSrc = src.replace(" ", "+");
    40         List<Lanmu> lmList=ReadeExcel.taPCL(newSrc);
    41         int flag=ConnOrcl.connToTable(lmList);
    42         if(flag==1)
    43             return 1;
    44         else
    45             return 2;
    46     }
    ReadeExcel
     1 public class ReadeExcel {
     2     public static List<Lanmu> taPCL(String file)  
     3     {     
     4         List<Lanmu> LTPC = new ArrayList<Lanmu>();        
     5         try  
     6         {                                           
     7             //选取excel文件         
     8             Workbook rwb=Workbook.getWorkbook(new File(file));//获得工作薄(Workbook)          
     9             //选取excel文件中的第一个工作薄  
    10             Sheet sheet = rwb.getSheet(0);  
    11             //得到excel表行数  
    12             int RowNum = sheet.getRows();            
    13             for(int i=1;i<RowNum;i++)  
    14             {  
    15                 //获得excel表中第1列第i行单元格  
    16                 Cell cell0 = sheet.getCell(0, i);  
    17                 //获得excel表中第2列第i行单元格  
    18                 Cell cell1 = sheet.getCell(1, i);  
    19                 //获得cell0单元格内容  
    20                 String name = cell0.getContents();  
    21                 //获得cell1单元格内容  
    22                 String state = cell1.getContents();                   
    23                 Lanmu lanmu = new Lanmu();  
    24                 lanmu.setName(name);
    25                 lanmu.setState(state);             
    26                 LTPC.add(lanmu);  
    27             }  
    28         }  
    29         catch(Exception e)  
    30         {  
    31             e.printStackTrace();  
    32         }        
    33         return LTPC;  
    34     }      
    35 }
    
    
    ConnOrcl
     1 public class ConnOrcl {
     2     
     3         private static Connection conn;  
     4         private static Statement stat;  
     5         private static String driver = "oracle.jdbc.driver.OracleDriver";  
     6         private static int SUCCESS=1; 
     7         private static int FILE=2; 
     8         public static int connToTable(List<Lanmu> lanmus)  
     9         {  
    10             try  
    11             {  
    12                 //数据库连接  
    13                 Class.forName(driver);  
    14                 conn = java.sql.DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:orcl", "GKBMFZXT", "GKBMFZXT");  
    15                 stat = conn.createStatement();  
    16                  int flag=0;
    17                 //遍历list,插入数据库  
    18                 for(Lanmu lanmu : lanmus)  
    19                 {  
    20                     StringBuffer sql = new StringBuffer();             
    21                     //构造sql语句  
    22                     sql.append("insert into lanmu_table (id,name,state) values ('");  
    23                     String id=UUID.randomUUID().toString().replace("-","");
    24                     String name = lanmu.getName(); 
    25                     String state = lanmu.getState();                    
    26                     sql.append(id).append("','");
    27                     sql.append(name).append("','");  
    28                     sql.append(state).append("')");                        
    29                     //执行sql语句  
    30                     stat.execute(sql.toString());  
    31                     flag++;
    32                 }
    33                 
    34                 if(flag==lanmus.size()){
    35                     return SUCCESS;
    36                 }
    37             }  
    38             catch(ClassNotFoundException e)  
    39             {  
    40                 e.printStackTrace();  
    41             }  
    42             catch(SQLException e)  
    43             {  
    44                 e.printStackTrace();  
    45             }  
    46             finally  
    47             {  
    48                 if(null != stat)  
    49                 {  
    50                     try   
    51                     {  
    52                         stat.close();  
    53                     }   
    54                     catch (SQLException e)  
    55                     {  
    56                         e.printStackTrace();  
    57                     }  
    58                 }  
    59                 if(null != conn)  
    60                 {  
    61                     try   
    62                     {  
    63                         conn.close();  
    64                     }   
    65                     catch (SQLException e)   
    66                     {  
    67                         e.printStackTrace();  
    68                     }  
    69                 }  
    70             }  
    71             return FILE;
    72         }  
    73 
    74 }
    (二)文件的下载

     1 @RequestMapping(params="downLoad") 
     2     public String downLoad(HttpServletRequest request,HttpServletResponse response)throws Exception{
     3         
     4         
     5         String fileName=request.getParameter("fileName");
     6         File f=new File("C:\Users\ztl\Desktop\lanmu.xls");
     7     
     8         BufferedInputStream buffer=null;
     9         OutputStream out=null;
    10     try{
    11         if(!f.exists()){
    12     
    13             response.sendError(404,"File not find!");
    14             return "File not find!";
    15     
    16         }
    17         buffer = new BufferedInputStream(new FileInputStream(f));
    18         byte[] buf = new byte[1024];
    19         int len=0;
    20         response.reset();      
    21         response.setContentType("application/vnd.ms-excel");        
    22         response.setHeader("Content-Disposition","attachment;filename="+fileName);
    23         out = response.getOutputStream();
    24         while((len = buffer.read(buf))>0){
    25             out.write(buf,0,len);
    26         }
    27         out.flush();
    28         response.flushBuffer();
    29             
    30     }catch(Throwable e){
    31         e.printStackTrace();
    32     }finally{
    33         
    34         if(out!=null){
    35             out.close();
    36         }
    37     }
    38     
    39     return "view/luntan/lanmu_list";
    40         
    41     }
    42     
  • 相关阅读:
    HDU 2767 Proving Equivalences(强连通缩点)
    HDU 3836 Equivalent Sets(强连通缩点)
    POJ 2762 Going from u to v or from v to u?(强连通+缩点+拓扑排序)
    织梦dedecms中自定义表单必填项的设置方法
    dedecms中调用隐藏栏目的方法
    去掉dedecms友情链接中的LI标签的方法
    Mysql修改端口号 织梦DedeCMS设置教程
    织梦DedeCMS文章标题自动增加长尾关键词的方法
    DEDECMS短标题标签调用与字数修改的方法
    dedecms批量替换文章中超链接的方法
  • 原文地址:https://www.cnblogs.com/xiaotian-222/p/6951274.html
Copyright © 2020-2023  润新知