zoukankan      html  css  js  c++  java
  • 动态网页技术--JSP(6)

    一.图片上传:

                     FileUpload是用来实现Java环境下的文件上传功能,与常见的SmartUpload齐名

    客户端:  

          1.form的enctype属性设置为 multipart/form-data,设置该值后,浏览器在上传文件时,将把文件数据附带在Http请求体中,并使用MIME协议对上传文件进行描述,以方便接收方对上传数据进行解析和处理。

          2.form的method属性设置为 POST
          3.添加文件上传项<input type=“file” ... />

    上传步骤:( smartupload)

       1.引入jar文件

     jspsmartupload.jar

          2.实例化上载类

     SmartUpload mySmartUpload = new SmartUpload();

          3.初始化  (pageContext)

      mySmartUpload.initialize(pageContext);

          4.准备上传  (没有直接上传呢)

        mySmartUpload.upload();

          5.保存上传文件  (提交)   

      mySmartUpload.save("/upup");

    •需求将一张图片上传到服务器的upup文件夹下

     文件路径

    创建表单上传页面

     1 indexTest.jsp表单上传页面
     2 
     3 <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
     4 <%
     5 String path = request.getContextPath();
     6 String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
     7 %>
     8 
     9 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    10 <html>
    11   <head>
    12     <base href="<%=basePath%>">
    13     
    14     <title>test上传</title>
    15     <meta http-equiv="pragma" content="no-cache">
    16     <meta http-equiv="cache-control" content="no-cache">
    17     <meta http-equiv="expires" content="0">    
    18     <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    19     <meta http-equiv="description" content="This is my page">
    20     <!--
    21     <link rel="stylesheet" type="text/css" href="styles.css">
    22     -->
    23   </head>
    24   
    25   <body>
    26                         <!--  上传的表单要这样被封装    -->
    27   <form action="up.jsp" method="post" enctype="multipart/form-data"/>
    28     请输入:<input type="text" name="name"/><br/>
    29     <input type="file" name="file"/>
    30     <input type="submit" value="上传">
    31   
    32   </form>
    33   </body>
    34 </html>
     1 上传流程
     2 
     3 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
     4 <%@ page import="com.jspsmart.upload.*"%>
     5 
     6 
     7 <%
     8     String path = request.getContextPath();
     9     String basePath = request.getScheme() + "://"
    10             + request.getServerName() + ":" + request.getServerPort()
    11             + path + "/";
    12 %>
    13 
    14 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    15 <html>
    16     <head>
    17         <base href="<%=basePath%>">
    18 
    19         <title>My JSP 'up.jsp' starting page</title>
    20 
    21         <meta http-equiv="pragma" content="no-cache">
    22         <meta http-equiv="cache-control" content="no-cache">
    23         <meta http-equiv="expires" content="0">
    24         <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    25         <meta http-equiv="description" content="This is my page">
    26         <!--
    27     <link rel="stylesheet" type="text/css" href="styles.css">
    28     -->
    29 
    30     </head>
    31 
    32     <body>
    33         <%
    34             //步骤一:实例化上载bean
    35             SmartUpload mySmartUpload = new SmartUpload();
    36 
    37             //步骤二:初始化
    38             mySmartUpload.initialize(pageContext);
    39                 
    40             //步骤三:准备上载文件
    41                 mySmartUpload.upload();
    42                 
    43             //步骤四:保存文件
    44             //    mySmartUpload.save("/upup");
    45             
    46 ////////////////////////////////////////////////////////////////////    
    47             //表单被封装后直接通过request不能获得值    
    48             //    String name=request.getParameter("name");
    49         String name=mySmartUpload.getRequest().getParameter("name");
    50 
    51           //取得文件扩展名,后缀
    52           String ext=mySmartUpload.getFiles().getFile(0).getFileExt();
    53            
    54          //利用自定义名字上传,保存文件名  getFiles()得到所有file类型数组,可用作批量上传  savaAs()方法用来更改名字
    55         // mySmartUpload.getFiles().getFile(0).saveAs("/upup/"+name+"."+ext);
    56 
    57            //利用随机数名字上传,保存文件名
    58            String uuid = UUID.randomUUID().toString();
    59           mySmartUpload.getFiles().getFile(0).saveAs("/upup/"+uuid+"."+ext);
    60         %>
    61 
    62         <h1>上传成功</h1>
    63         
    64     </body>
    65 </html>
      1 <%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
      2 <%@ page import="java.util.*" %>
      3 <%@ page import="java.text.SimpleDateFormat" %>
      4 <%@ page import="com.jspsmart.upload.*" %>
      5 
      6 
      7 <% 
      8 response.setHeader("Expires","0");
      9 response.setHeader("Pragma","nono-catch");
     10 response.setHeader("Catch-Control","no-cache");
     11 %> 
     12 
     13 <% 
     14     String _contexPath = request.getContextPath();
     15     String ext = "";
     16   
     17 %> 
     18 
     19 <html>
     20 <head>
     21 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
     22 <script language="JavaScript" src="<%=_contexPath%>/css/common.js"></script>
     23 <title>……</title>
     24 </head>
     25 <body> 
     26 <%
     27         
     28         String trace = "";
     29         String filename = "";
     30         try
     31         {
     32                  //实例化上载bean
     33                 SmartUpload mySmartUpload = new SmartUpload();
     34                 
     35                 //初始化
     36                 mySmartUpload.initialize(pageContext);
     37                 
     38                 // 设定上传限制
     39                 // 1.限制每个上传文件的最大值
     40                 mySmartUpload.setMaxFileSize(500 * 1024 * 1024 * 1024);
     41                 // 2.限制总上传数据的长度。
     42                 //mySmartUpload.setTotalMaxFileSize(200000000);
     43                 // 3.设定允许上传的文件(通过扩展名限制),仅允许doc,txt文件。
     44                 //mySmartUpload.setAllowedFilesList("doc,txt");
     45                 // 4.设定禁止上传的文件(通过扩展名限制),禁止上传带有exe,bat,jsp,htm,html扩展名的文件和没有扩展名的文件。
     46                 //mySmartUpload.setDeniedFilesList("exe,bat,jsp,htm,html,,");
     47                 
     48                 //上载文件
     49                 mySmartUpload.upload();
     50                 // 将上传文件全部保存到指定目录
     51                 //int count = mySmartUpload.save("/upload");
     52                 //System.out.println(mySmartUpload.getFiles().getCount() + "个文件上传成功!<br>");
     53                 
     54                 //获得Request对象
     55                 //re1 = (HttpServletRequest)pageContext.getRequest();
     56                 //re1 = (HttpServletRequest)mySmartUpload.getRequest();
     57                 //String other = mySmartUpload.getRequest().getParameter("other");
     58                 
     59                        
     60                 //循环取得所有上载的文件
     61                 
     62                 for (int i = 0; i < mySmartUpload.getFiles().getCount(); i++)
     63                 {
     64                       //取得上载的文件
     65                       com.jspsmart.upload.File myFile = mySmartUpload.getFiles().getFile(i);
     66                       
     67                       if (!myFile.isMissing())
     68                     {
     69                        ext = myFile.getFileExt();
     70                        //全名(绝对路径+名称)
     71                        String myFilePath = myFile.getFilePathName();
     72                        //取得文件的大小
     73                        int fileSize = myFile.getSize();
     74                        filename = new String(myFile.getFileName().getBytes(),"utf-8");
     75                       // System.out.print(filename);
     76                        //另存路径
     77                        //String jspPath = application.getRealPath(request.getRequestURI());//本JSP文件的服务器绝对路径
     78                        String filePath = getServletContext().getRealPath("/imgupload/");//本WEB程序根目录服务器绝对路径 
     79                        
     80                        //filePath += "\UserFiles\Image\";
     81                     
     82                        
     83                        //要创建的文件最终保存目录
     84                        java.io.File file = new java.io.File( filePath ); 
     85                        
     86                       // System.out.println("filepath==="+filePath);
     87                          
     88                          if(file.exists())
     89                                      file.mkdirs();
     90                                      
     91   
     92                      //  trace += ((new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()))+"."+ext);//最终保存路径
     93                        
     94                        
     95                       // request.setAttribute("Image",trace);
     96                       // System.out.println("trace==="+filename);
     97                        
     98                        myFile.saveAs(filePath + "\" + filename);
     99 
    100                        // 将文件另存
    101                        //myFile.saveAs("\upload\" + myFile.getFileName());
    102                        // 另存到以WEB应用程序的根目录为文件根目录的目录下
    103                        //myFile.saveAs("\upload\" + myFile.getFileName(), SmartUpload.SAVE_VIRTUAL);
    104                        //将文件另存到指定目录(操作系统的目录)
    105                        //myFile.saveAs(trace, SmartUpload.SAVE_PHYSICAL);
    106                       } 
    107                       else
    108                       {
    109                           // 若文件不存在则继续
    110                         continue;
    111                         
    112                       }
    113                 }//end for
    114           }catch(Exception SE){
    115             System.out.println("com.jspsmart.upload.SmartUpload上传期间产生错误!");
    116           }
    117 %>
    118 <script language='javascript'>
    119 alert('上传成功');
    120 </script>
    121 <img src="imgupload/<%=filename %>">
    122 </body>
    123 </html>

    运行结果

  • 相关阅读:
    51Nod-1013 3的幂的和【快速模幂+逆元】
    51Nod-1082 与7无关的数【进制+打表】
    51Nod-1080 两个数的平方和【暴力法】
    51Nod-1015 水仙花数【进制+查表搜索】
    51Nod-1003 阶乘后面0的数量【分析思维】
    51Nod-1002 数塔取数问题【DP】
    51Nod-1179 最大的最大公约数【暴力】
    51Nod-1018 排序【排序】
    51Nod-1126 求递推序列的第N项【递推序列+模除】
    51Nod-1031 骨牌覆盖【递推】
  • 原文地址:https://www.cnblogs.com/Pioneer-HengYu/p/6652160.html
Copyright © 2011-2022 走看看